home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / custom_lis205115322007.psc / listview / 32bpp DIB / c32bppDIB.cls < prev   
Text File  |  2007-03-01  |  128KB  |  1,197 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "c32bppDIB"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. Option Explicit
  15.  
  16. ' Credits/Acknowledgements - Thanx goes to:
  17. '   Paul Caton for his class on calling non VB-Friendly DLLs that use _cdecl calling convention
  18. '   Alfred Koppold for his PNG, VB-only, decompression routines
  19. '   www.zlib.net for their free zLIB.dll, the standard DLL for compressing/decompressing PNGs
  20. '   coders like you that provide constructive criticism to make this class better & more all-inclusive
  21.  
  22. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  23. '                                       QUICK OVERVIEW
  24. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  25. ' About 32bpp pre-multiplied RGB (pARGB) bitmaps, if you are not aware.
  26. '   - These are used specifically for the AlphaBlend API & are GDI+ compatible
  27. '   Advantages:
  28. '       - Images can be per-pixel alpha blended
  29. '       - Opacity can be simultaneously adjusted during rendering
  30. '       - AlphaBlend does both BitBlt & StretchBlt for pARGB images.
  31. '       - Speed: AlphaBlend & GDI+ are pretty quick APIs vs manual blending
  32. '   Disadvantages:
  33. '       - The original RGB values are permanently destroyed during pre-multiplying
  34. '           -- there is no way to convert pARGB back to non-premultiplied RGB values
  35. '           -- the formula would be: reconstructedRed=(preMultipliedRed * 255) \ Alpha.
  36. '               but because of integer division when pre-multiplying the result is only close
  37. '               and if this should be premultiplied again & converted again, the results can get worse
  38. '       - Displaying a pre-multiplied bitmap without AlphaBlend will not result in
  39. '           the image being displayed as expected.
  40. '       - Not ideal for saving due to its size: SizeOf= W x H x 4
  41. '           -- better to save source image instead or compress the DIB bytes using favorite compression utility
  42. '           -- with GDI+, image can be converted to PNG for storage
  43. '       - AlphaBlend (msimg32.dll) is not included with Win95, NT4 and lower
  44. ' Note that GDI+ is standard on WinXP+, and can be used on Win98,ME,2K, & on NT4 if SP6 is installed
  45.  
  46. ' About Win95, Win98, NT3.5, NT4 & WinME support
  47. ' ----------------------------------------------
  48. ' The routines will not honor AlphaBlend if it exists on those systems. Win98's version,
  49. ' for example, has several bugs that can crash the application when AlphaBlending to DIBs.
  50. ' NT4, NT3.5 & Win95 do not come with AlphaBlend and I do not have WinME to test with.
  51. ' Therefore, to support these systems, the Render routine will alphablend manually
  52. ' regardless if the AlhpaBlend API (msimg32.dll) exists on the system or not.
  53.  
  54. ' Table of methods used for rendering dependent upon class settings and O/S
  55. ' Win2K or Better?  GDI+ Available?  HighQualityInterpolation?  Method of Rendering
  56. '       Yes              Yes                No / Yes            AlphaBlend / GDI+
  57. '       No               Yes                No / Yes            GDI+ / GDI+
  58. '       Yes              No                 No / Yes            AlphaBlend / Manually
  59. '       No               No                 No / Yes            Manually / Manually
  60. ' Note that AlphaBlend does not support mirroring nor rotation nor high quality interpolation,
  61. ' so if these are applied when rendering, then class will use GDI+ if available,
  62. ' otherwise, manually rendered. By default, the class will initialize with
  63. ' HighQualityInterpolation=True if GDI+ is available.
  64.  
  65.  
  66. ' Class Purpose:
  67. ' This class holds the 32bpp image. It also marshals any new image thru
  68. ' the battery of parsers to determine best method for converting the image
  69. ' to a 32bpp alpha-compatible image. It handles rendering, rotating, scaling,
  70. ' mirroring of DIBs using manual processes, AlphaBlend, and/or GDI+.
  71. ' What about DirectX?  Hmmmm...
  72.  
  73. ' The parser order is very important for fastest/best results...
  74. ' cPNGparser :: will convert PNG, all bit depths; aborts quickly if not PNG
  75. ' cGIFparser :: will convert non-transparent/transparent GIFs; aborts quickly
  76. ' cICOpraser :: will convert XP-Alpha, paletted, true color, & Vista PNG icons
  77. '               -- can also convert most non-animated cursors
  78. ' cBMPparser :: will convert bitmaps, wmf/emf & jpgs
  79.  
  80. ' The parsers are efficient. Most image formats have a magic number that give
  81. '   a hint to what type of image the file/stream is. However, checks need to
  82. '   be employed because non-image files could feasibly have those same magic
  83. '   numbers. If the image is determined not to be one the parser is designed
  84. '   to handle, the parser rejects it and the next parser takes over.  The
  85. '   icon parser is slightly different because PNG files can be included into
  86. '   a Vista ico file. When this occurs, the icon parser will pass off the
  87. '   PNG format to the PNG parser automatically.
  88. ' And last but not least, the parsers have no advanced knowledge of the image
  89. ' format; as far as they are concerned, anything passed is just a byte array
  90.  
  91. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  92. '                                       CHANGE HISTORY
  93. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  94. ' Accompanying FAQ.rtf is updated with every change
  95. ' 20 Feb 07:
  96. '   - PNGparser conversion routines overhauled for speed, minor error found & fixed
  97. '       -- PNGparser.InitializePalette did not correctly identify transparency index for Grayscale with simple transparency
  98. '   - PNGwriter.FormatCaption & FormatText recognized non-spec text but did not prevent it from being written to PNG
  99. '   - Modified PNGwriter to use zLIB compress2 function when available
  100. '   - Error on my part, last post had debugging code using zLibVB.dll vs zLib.dll
  101. '       -- no serious harm but versions prior to this update probably will not be able to use zlib.net's zLib.DLL
  102. ' 18 Feb 07:
  103. '   - Bugs recognized & fixed
  104. '       -- cPNGwriter.OptimizeTrueColor could error when converting to 24bpp images
  105. '       -- cPNGwriter.OptimizeTrueColor was not writing the single transparency color for 24bpp converted images
  106. '       -- cPNGwriter.Write_tRNS was not always writing the tranpsarency color either
  107. '       -- PngPropertySet was not honoring the user-selected filterMethod property
  108. ' 16 Feb 07:
  109. '   - More PNG support....(First non-GDI+ PNG writer in VB open source? Maybe.)
  110. '       -- Added cPNGwriter class. Can create PNGs using zLIB.dll versions. See class for more
  111. '       -- Added cCDECL class. Allows calling zLIB.dll when zLIB is not VB-friendly
  112. '           -- added modParsers.iparseValidateZLIB to determine if zLIB is available & if VB-friendly
  113. '           -- required adding some custom zLIB calls to end of cPngWriter & cPngParser classes
  114. '       -- added PngPropertySet to allow PNG creation options not possible w/GDI+. Must have zLIB available
  115. '       -- added PngPropertyGet to retrieve settings. Over a dozen options
  116. '       -- added isZlibEnabled property to inform you if zLIB can be used or not
  117. '       -- Modified SaveToStream_PNG & SaveToFile_PNG to use zLIB if GDI+ is not available,
  118. '               but zLIB is or vice versa. zLIB is prefered when pngPropertySet is called
  119. '       -- Zlib is 100% free and is available directly from source: www.zlib.net
  120. ' 11 Feb 07:
  121. '   - Logic error. When a DIB is first initialized, the Alpha property is False.
  122. '       This should have been Alpha=True. Note that if you are creating blank DIBs and rendering other
  123. '       DIBs to the blank one, you should change the blank DIB's alpha and image format properties as
  124. '       appropriate, dependent upon what you are rendering to that DIB. The Alpha property is used in
  125. '       other routines and must be accurate, but the ImageType property is not used
  126. '   - Added imgError to the ImageType property enumeration. This can assist when self-rendering
  127. '       DIBs. If ImageType=imgError then Handle=0& and no DIB has been loaded into the class.
  128. ' 10 Feb 07:
  129. '   - Added LoadPicture_FromOrignalFormat routine which will recreate the DIB from the bytes
  130. '       cached during a call to LoadPicture_File or LoadPicture_Stream
  131. '   - Added TrimImage routine which will remove excess transparency from an image
  132. '       If a 256x256 image has 20x20 transparency border around it, the image will be reduced to 216x216
  133. '   - When calling Resize, class would not save original image bytes if they existed; now it does
  134. '   - Minor tweaks in rotation routines. Routines no longer overwrite class' Interpolation setting
  135. '   - Logic error fixed: GDI+ when rendering mirrored & rotated used incorred DC X,Y coordinates
  136. ' 4 Feb 07:
  137. '   - Added SaveToFile_PNG & SaveToStream_PNG as main class options, but only supported if isGDIplusEnabled = True
  138. '   - Complete revamp of mirroring routines.
  139. '       -- Added MirrorDIB routine that mirrors an image as needed & mirrored bytes are later rotated, scaled, rendered
  140. '       -- Previous version attempted to calculate mirroring offsets when scaling, rotating, rendering -- failed
  141. '       -- Following routines modified: pvResize, CopyImageTo, Resize, RotateAtTopLeft
  142. '   - Logic error fixed: pvResize would clip wrong end of image when image is rendered past vertical bounds of DC.
  143. '   - Modified startup to always set HighQualityInterpolation if GDI+ is available.
  144. ' 1 Feb 07: By request...
  145. '   - Added mirroring support to following routines. Passing a negative destination width and/or height causes mirroring
  146. '       - pvResize, Win9xBlend, CopyImageTo, Resize, RotateAtCenterPoint, RotateAtTopLeft & cGDIPlus.RenderGDIplus
  147. '       - The msimg32.dll AlphaBlend API cannot perform mirroring. Therefore...
  148. '       - Whenever mirroring is in effect and GDI+ can't be used, mirroring will be done manually
  149. '       - GDI+, if available, will only perfrorm the mirroring if also rotating or if HighQualityInterpolation=True
  150. '   - Found another minor bug. Broke GDI+ ability to Global blend while rotating. Fixed.
  151. ' 31 Jan 07:
  152. '   - Fixed logic error when rotating negative angles via GDI+ (cGDIPlus.RenderGDIplus routine)
  153. '   - Fixed logic error when manually resizing using BiLinear method (pvResize routine)
  154. '       - routines were combining current pixel with one above, not below as required
  155. '   - Fixed rotation routines (non-GDI+); now rotation while non-proportional scaling compatible
  156. '   - Renamed cPNGParser.SaveTo routine to cGDIPlus.SaveToPNG. See Change 4Jan07 below for more
  157. ' 30 Jan 07:
  158. '   - Added rotation options. See RotateAtCenterPoint & RotateAtTopLeft
  159. '       - The two routines are identical except for how the destination X,Y coords are determined
  160. '   - Added isGDIplusEnabled property to inform you whether or not GDI+ can be used on the system
  161. '   - Added HighQualityInterpolation property to produce better renderings
  162. '       - When set to True & GDI+ is available, any rendering is done by GDI+
  163. '       - When set to True and GDI+ is not available, manual interpolation is done when scaling/rotating
  164. '       - Property can be set to False manually to prevent GDI+ usage
  165. '   - Added MakeGrayScale routine. Irreversible pixel modifications
  166. '       - 3 different grayscale formulas are provided
  167. '   - Relocated all GDI+ function calls and related code into a new class: cGDIPlus
  168. '   - Relocated cPNGparser.ValidateDLL to modParsers as iparseValidateDLL
  169. ' 25 Jan 07:
  170. '   - Modified Win9xBlend routine. Did not exactly replicate AlphaBlend when stretching; fixed I believe
  171. '       -- Added extra checks in Win9xBlend & pvResize when alphablending on Win9x systems.
  172. '       -- Prevents user from supplying invalid values that could cause routines to read past allocated memory
  173. '       -- Properly handles negative destination DC offsets
  174. '   - Changed iswin95Alpha property to isAlphaBlendFriendly to indicate whether or not AlphaBlend will be used
  175. ' 24 Jan 07:
  176. '   - Now compatible with all O/S. Added Win95/NT4 support to the following routines:
  177. '       CopyImageTo, Resize, Render
  178. '       -- Added Win9xBlend & heavily modified then added Carles P.V.'s pvResize routine
  179. '   - Bug found. cPNGparser.vbDecompress, under NT4, was causing crashes when trying to
  180. '       resize a passed byte array. Fixed. Array is sized before it is passed to that routine
  181. '   - Bug found. The iparseCreateShapedRegion routine was creating shaped regions bottom up
  182. '       and this crashed on NT4. Fixed so regions are created top down always
  183. '   - Bug found. In Win98 & possibly other O/S. When VB creates a 24bpp stdPicture as used
  184. '       in cBMPparser, the stdPicture.Render method can write into the alpha channel of the
  185. '       destination 32bpp DIB; 24bpp has no alpha channel. Routine tweaked to handle that.
  186. ' 17 Jan 07:
  187. '   - Added CreateCheckerBoard method. This method will create a checkerboard pattern
  188. '       as the DIB image. It will also set the ImageType property to imgCheckerBoard
  189. '       so you know whether or not the image is class checkerboard or not.
  190. '       This can be useful when the DIB should be displayed, but has no image to display.
  191. '       The flag can be used to determine saving the image. If imgCheckerboard then noSave
  192. '   - Added Resize method to permanently resize the image within the DIB
  193. '   - Added optional resizing parameters to CopyImageTo routine
  194. '   - Tweaked cBMPparser & cGIFparser to always modify alpha bytes regardless of transparency
  195. '       -- Previously, when image had no transparency, the alpha bytes were not touched, rather
  196. '          the class tracked this information via its Alpha property. But if you wanted to pass
  197. '          the DIB to some other routine in your project and process/render it, the unmodified
  198. '          alpha bytes could prove to fool those processes/routines
  199. '   - Tweaked Render method to fully expose all of AlphaBlend's parameters
  200. '   - LoadPicture_StdPicture could not process WMFs, fixed
  201. '   - LoadDIBinDC fixed - could fail if multiple calls made passing a True parameter
  202. '   - Error in LoadPictureEx prevented saving image bytes when PNG file was loaded, fixed
  203. ' 5 Jan 07:
  204. '   - Added SaveFormat parameter to LoadPicture_File & LoadPicture_Stream
  205. '       -- option has class cache the original bytes of the image if loaded
  206. '       -- the 32bpp DIB will always be larger than the source bytes and for
  207. '           usercontrols, saving the original bytes takes less space than
  208. '           saving the DIB bytes.
  209. '   - Added GetOrginalFormat to retrieve bytes when SaveFormat was passed as True
  210. '   - Added SetOriginalFormat used when copying one DIB class to another
  211. ' 4 Jan 07:
  212. '   - Added LoadPicture_ByHandle, LoadPicture_StdPicture, ScaleImage & CopyImageTo
  213. '   - Added cGDIPlus.SaveToPNG (testing). Requires GDI+ or zLIB but will save 32bpp to PNG file or stream
  214. '       -- not accessible, right now, from c32bppDIB. Must create cGDIPlus class to use it.
  215. '   - Modified cICOparser's GetBestMatch algorithm
  216. '   - Added imgPNGicon as an image type to distinguish PNG in Vista Icon vs standard .PNG file
  217. '   - Bug found: removing overlays in cGIFparser.ConvertGIFto32bpp; forgot ByVal VarPtrArray(...)
  218. '       which could cause crash when compiled. Fixed & double checked everywhere else too
  219. ' 1 Jan 07:
  220. '   - Added SaveToFile & SaveToStream methods
  221. '   - cBMPparser could possibly try to query unauthorized memory; fixed
  222. '   - Methodology changed a bit when parsers return results. If image is definitely one
  223. '       that the parser is responsible for & the image is invalid, the parser will return
  224. '       True to prevent other parsers from handling the image. The c32bppDIB.Handle is used
  225. '       to determine true success or failure.
  226. '       -- cGIFparser when recognizing improperly formatted GIF would allow image to continue to
  227. '           other parsers which then may cause those parsers to lock up.
  228. ' 26 Dec 06: First version
  229. ' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  230.  
  231.  
  232. ' No APIs are declared public. This is to prevent possibly, differently
  233. ' declared APIs, or different versions of the same API, from conflciting
  234. ' with any APIs you declared in your project. Same rule for UDTs.
  235. ' Note: I did take liberties, changing parameter types, in several APIs throughout
  236.  
  237. ' Used to determine operating system
  238. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As Any) As Long
  239. Private Const VER_PLATFORM_WIN32_WINDOWS As Long = &H1
  240. Private Type OSVERSIONINFOEX
  241.    dwOSVersionInfoSize As Long
  242.    dwMajorVersion As Long
  243.    dwMinorVersion As Long
  244.    dwBuildNumber As Long
  245.    dwPlatformId As Long
  246.    szCSDVersion As String * 128 ' up to here is OSVERSIONINFO vs EX
  247.    wServicePackMajor As Integer ' 8 bytes larger than OSVERSIONINFO
  248.    wServicePackMinor As Integer
  249.    wSuiteMask As Integer
  250.    wProductType As Byte
  251.    wReserved As Byte
  252. End Type
  253.  
  254. ' APIs used to manage the 32bpp DIB
  255. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  256. Private Declare Function CreateCompatibleDC Lib "gdi32.dll" (ByVal hDC As Long) As Long
  257. Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
  258. Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal hDC As Long) As Long
  259. Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hDC As Long) As Long
  260. Private Declare Function SelectObject Lib "gdi32.dll" (ByVal hDC As Long, ByVal hObject As Long) As Long
  261. Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
  262. Private Declare Function CreateDIBSection Lib "gdi32.dll" (ByVal hDC As Long, ByRef pBitmapInfo As Any, ByVal un As Long, ByRef Pointer As Long, ByVal Handle As Long, ByVal dw As Long) As Long
  263. Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal nHeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal lBlendFunction As Long) As Long
  264. Private Declare Function SetStretchBltMode Lib "gdi32.dll" (ByVal hDC As Long, ByVal nStretchMode As Long) As Long
  265. Private Declare Function GetObjectType Lib "gdi32.dll" (ByVal hgdiobj As Long) As Long
  266. Private Declare Function GetCurrentObject Lib "gdi32.dll" (ByVal hDC As Long, ByVal uObjectType As Long) As Long
  267. Private Declare Function GetGDIObject Lib "gdi32.dll" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long
  268. Private Declare Function GetIconInfo Lib "user32.dll" (ByVal hIcon As Long, ByRef piconinfo As ICONINFO) As Long
  269. Private Const STRETCH_HALFTONE As Long = 4
  270. Private Const OBJ_BITMAP As Long = 7
  271. Private Const OBJ_METAFILE As Long = 9
  272. Private Const OBJ_ENHMETAFILE As Long = 13
  273. Private Type BITMAP
  274.     bmType As Long
  275.     bmWidth As Long
  276.     bmHeight As Long
  277.     bmWidthBytes As Long
  278.     bmPlanes As Integer
  279.     bmBitsPixel As Integer
  280.     bmBits As Long
  281. End Type
  282.  
  283. ' APIs used to create files
  284. Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
  285. Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
  286. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  287. Private Const INVALID_HANDLE_VALUE = -1
  288. Private Const CREATE_ALWAYS = 2
  289. Private Const GENERIC_READ = &H80000000
  290. Private Const GENERIC_WRITE = &H40000000
  291. Private Const FILE_ATTRIBUTE_NORMAL = &H80
  292.  
  293. ' used to create the checkerboard pattern on demand
  294. Private Declare Function FillRect Lib "user32.dll" (ByVal hDC As Long, ByRef lpRect As RECT, ByVal hBrush As Long) As Long
  295. Private Declare Function CreateSolidBrush Lib "gdi32.dll" (ByVal crColor As Long) As Long
  296. Private Declare Function OffsetRect Lib "user32.dll" (ByRef lpRect As RECT, ByVal X As Long, ByVal Y As Long) As Long
  297. Private Declare Function BitBlt Lib "gdi32.dll" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  298. Private Type RECT
  299.     Left As Long
  300.     Top As Long
  301.     Right As Long
  302.     Bottom As Long
  303. End Type
  304.  
  305.  
  306. ' used when saving an image or part of the image
  307. Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
  308. Private Type SafeArrayBound
  309.     cElements As Long
  310.     lLbound As Long
  311. End Type
  312. Private Type SafeArray
  313.     cDims As Integer
  314.     fFeatures As Integer
  315.     cbElements As Long
  316.     cLocks As Long
  317.     pvData As Long
  318.     rgSABound(0 To 1) As SafeArrayBound ' reusable UDT for 1 & 2 dim arrays
  319. End Type
  320.  
  321. Private Type ICONINFO
  322.     fIcon As Long
  323.     xHotspot As Long
  324.     yHotspot As Long
  325.     hbmMask As Long
  326.     hbmColor As Long
  327. End Type
  328. Private Type BITMAPINFOHEADER
  329.     biSize As Long
  330.     biWidth As Long
  331.     biHeight As Long
  332.     biPlanes As Integer
  333.     biBitCount As Integer
  334.     biCompression As Long
  335.     biSizeImage As Long
  336.     biXPelsPerMeter As Long
  337.     biYPelsPerMeter As Long
  338.     biClrUsed As Long
  339.     biClrImportant As Long
  340. End Type
  341. Private Type BITMAPINFO
  342.     bmiHeader As BITMAPINFOHEADER
  343.     bmiPalette As Long
  344. End Type
  345.  
  346. Private Const AC_SRC_OVER = &H0
  347. Private Const AC_SRC_ALPHA = &H1
  348.  
  349. Public Enum eImageFormat    ' source image format
  350.     imgError = -1  ' no DIB has been initialized
  351.     imgNone = 0    ' no image loaded
  352.     imgBitmap = 1  ' standard bitmap or jpg
  353.     imgIcon = 3    ' standard icon
  354.     imgWMF = 2     ' windows meta file
  355.     imgEMF = 4     ' enhanced WMF
  356.     imgCursor = 5  ' standard cursor
  357.     imgBmpARGB = 6  ' 32bpp bitmap where RGB is not pre-multiplied
  358.     imgBmpPARGB = 7 ' 32bpp bitmap where RGB is pre-multiplied
  359.     imgIconARGB = 8 ' XP-type icon; 32bpp ARGB
  360.     imgGIF = 9      ' gif; if class.Alpha=True, then transparent GIF
  361.     imgPNG = 10     ' PNG image
  362.     imgPNGicon = 11 ' PNG in icon file (Vista)
  363.     imgCursorARGB = 12 ' alpha blended cursors? do they exist yet?
  364.     imgCheckerBoard = 64 ' image is displaying own checkerboard pattern; no true image
  365. End Enum
  366.  
  367. Public Enum ePngProperties ' following are recognized "Captions" within a PNG file
  368.     txtTitle = 1           ' See cPNGwriter.SetPngProperty for more information
  369.     txtAuthor = 2
  370.     txtDescription = 4
  371.     txtCopyright = 8
  372.     txtCreationTime = 16
  373.     txtSoftware = 32
  374.     txtDisclaimer = 64
  375.     txtWarning = 128
  376.     txtSource = 256
  377.     txtComment = 512
  378.     ' special properties
  379.     txtLargeBlockText = 1024 ' this is free-form text can be of any length & contain most any characters
  380.     dateTimeModified = 2048  ' date/time of the last image modification (not the time of initial image creation)
  381.     colorDefaultBkg = 4096   ' default background color to use if PNG viewer does not do transparency
  382.     filterType = 8192        ' one of the eFilterMethods values
  383.     ClearAllProperties = -1  ' resets all PNG properties
  384. End Enum
  385.  
  386. Public Enum eTrimOptions    ' see TrimImage method
  387.     trimAll = 0
  388.     trimLeft = 1
  389.     trimTop = 2
  390.     trimRight = 4
  391.     trimBottom = 8
  392. End Enum
  393.  
  394. Public Enum eScaleOptions
  395.     scaleToSize = 0         ' [Default] will always scale
  396.     scaleDownAsNeeded = 1   ' will only scale down if image won't fit
  397.     ScaleStretch = 2        ' wll always stretch/distort
  398. End Enum
  399.  
  400. Public Enum eGrayScaleFormulas
  401.     gsclCCIR709 = 0
  402.     gsclNTSCPAL = 1
  403.     gsclSimpleAvg = 2
  404. End Enum
  405.  
  406. Public Enum eFilterMethods
  407.     filterDefault = 0     ' paletted PNGs will use filterNone while others will use filterPaeth
  408.     filterNone = 1        ' no byte preparation used; else preps bytes using one of the following
  409.     filterAdjLeft = 2     ' see cPNGwriter.EncodeFilter_Sub
  410.     filterAdjTop = 3      ' see cPNGwriter.EncodeFilter_Up
  411.     filterAdjAvg = 4      ' see cPNGwriter.EncodeFilter_Avg
  412.     filterPaeth = 5       ' see cPNGwriter.EncodeFilter_Paeth
  413.     filterAdaptive = 6    ' this is a best guess of the above 4 (can be different for each DIB scanline)
  414. End Enum
  415.  
  416. 'Private m_PNGprops As cPNGwriter    ' used for more advanced PNG creation options
  417. Private m_StretchQuality As Boolean ' if true will use BiLinear or better interpolation
  418. Private m_Handle As Long        ' handle to 32bpp DIB
  419. Private m_Pointer As Long       ' pointer to DIB bits
  420. Private m_Height As Long        ' height of DIB
  421. Private m_Width As Long         ' width of DIB
  422. Private m_hDC As Long           ' DC if self-managing one
  423. Private m_prevObj As Long       ' object deselected from DC when needed
  424. Private m_osCAP As Long         ' 1=Can use AlphaBlend (Win2K+), 2=Can use GDI+ (Win98+), 4=Can use zLib. See Class_Initialize
  425. Private m_Format As eImageFormat ' type of source image
  426. Private m_ManageDC As Boolean   ' does class manage its own DC
  427. Private m_AlphaImage As Boolean ' does the DIB contain alpha/transparency
  428. Private m_ImageByteCache() As Byte  ' should you want the DIB class to cache original bytes
  429. ' ^^ N/A if image is loaded by handle, stdPicture, or resource
  430.  
  431. Public Function LoadPicture_File(ByVal FileName As String, _
  432.                                 Optional ByVal iconCx As Long, _
  433.                                 Optional ByVal iconCy As Long, _
  434.                                 Optional ByVal SaveFormat As Boolean) As Boolean
  435.  
  436.     ' PURPOSE: Convert passed image file into a 32bpp image
  437.     
  438.     ' Parameters.
  439.     ' FileName :: full path of file. Validation occurs before we continue
  440.     ' iconCx :: desired width of icon if file is an icon file. Default is 32x32
  441.     ' iconCy :: desired height of icon if file is an icon file. Default is 32x32
  442.     ' SaveFormat :: if true, then the image will be cached as a byte array only
  443.     '   if the image was successfully loaded. Call GetOrginalFormat to retrieve them.
  444.     
  445.     ' Why would you want to save the bytes? If this is being used in a usercontrol,
  446.     ' saving the bytes will almost always be less size than saving the 32bit DIB.
  447.     ' Additionally, these classes have the ability to get different sizes from
  448.     ' the original source (i.e., WMF, icon, cursors) if available, but if the
  449.     ' 32bit DIB is saved, it is a constant size. The potential of different sizes
  450.     ' could allow better resizing of the image vs stretching the DIB.
  451.  
  452.     On Error Resume Next
  453.     If Not iparseFileExists(FileName) Then Exit Function
  454.     If FileLen(FileName) < 57 Then Exit Function
  455.     ' no image file/stream can be less than 57 bytes and still be an image
  456.     If Err Then
  457.         Err.Clear
  458.         Exit Function
  459.     End If
  460.     Dim aDIB() As Byte  ' dummy array
  461.     LoadPicture_File = LoadPictureEx(FileName, aDIB(), iconCx, iconCy, 0, 0, SaveFormat)
  462.     
  463. End Function
  464.  
  465. Public Function LoadPicture_Stream(inStream() As Byte, _
  466.                                     Optional ByVal iconCx As Long, _
  467.                                     Optional ByVal iconCy As Long, _
  468.                                     Optional ByVal streamStart As Long = 0, _
  469.                                     Optional ByVal streamLength As Long = 0, _
  470.                                     Optional ByVal SaveFormat As Boolean) As Boolean
  471.     
  472.     ' PURPOSE: Convert passed array into a 32bpp image
  473.     
  474.     ' Parameters.
  475.     ' inStream:: byte stream containing the image. Validation occurs below
  476.     ' iconCx :: desired width of icon if file is an icon file. Default is 32x32
  477.     ' iconCy :: desired height of icon if file is an icon file. Default is 32x32
  478.     ' streamStart :: array position of 1st byte of the image file. Validated.
  479.     ' streamLength :: total length of the image file. Validated.
  480.     ' SaveFormat :: if true, then the image will be cached as a byte array only
  481.     '   if the image was successfully loaded. Call GetOrginalFormat to retrieve them.
  482.     
  483.     ' Why would you want to save the bytes? If this is being used in a usercontrol,
  484.     ' saving the bytes will almost always be less size than saving the 32bit DIB.
  485.     ' Additionally, these classes have the ability to get different sizes from
  486.     ' the original source (i.e., WMF, icon, cursors) if available, but if the
  487.     ' 32bit DIB is saved, it is a constant size. The potential of different sizes
  488.     ' could allow better resizing of the image vs stretching the DIB.
  489.     
  490.     If iparseIsArrayEmpty(Not inStream) Then Exit Function
  491.     If streamStart < LBound(inStream) Then streamStart = LBound(inStream)
  492.     If streamLength = 0 Then streamLength = UBound(inStream) - streamStart + 1
  493.     If streamLength < 57 Then Exit Function
  494.     ' no image file/stream can be less than 57 bytes and still be an image
  495.     LoadPicture_Stream = LoadPictureEx(vbNullString, inStream, iconCx, iconCy, streamStart, streamLength, SaveFormat)
  496.  
  497. End Function
  498.  
  499. Public Function LoadPicture_Resource(ByVal ResIndex As Variant, ByVal resSection As Variant, _
  500.                             Optional VbGlobal As IUnknown, _
  501.                             Optional ByVal iconCx As Long, _
  502.                             Optional ByVal iconCy As Long, _
  503.                             Optional ByVal streamStart As Long = 0, _
  504.                             Optional ByVal streamLength As Long = 0) As Boolean
  505.  
  506.     ' PURPOSE: Convert passed resource into a 32bpp image
  507.     
  508.     ' Parameters.
  509.     ' ResIndex :: the resource file index (i.e., 101)
  510.     ' ResSection :: one of the VB LoadResConstants or String value of
  511.     '       your resource section, i.e., vbResBitmap, vbResIcon, "Custom", etc
  512.     ' VbGlobal :: pass as VB.GLOBAL of the project containing the resource file
  513.     '       - Allows class to be mobile; can exist in DLL or OCX
  514.     '       - if not provided, class will use resource from existing workspace
  515.     '       - For example, if this class was in a compiled OCX, then the only way
  516.     '           to use the host's resource file is passing the host's VB.Global reference
  517.     ' iconCx :: desired width of icon if file is an icon file. Default is 32x32
  518.     ' iconCy :: desired height of icon if file is an icon file. Default is 32x32
  519.     ' streamStart :: array position of 1st byte of the image file. Validated.
  520.     ' streamLength :: total length of the image file. Validated.
  521.     '   -- See LoadPicture_Stream for the validation
  522.     
  523.     ' Tips:
  524.     ' 1) Store 32bpp bitmaps in the "Custom" resource always. Storing in the
  525.     '       Bitmap resource can change color depth of the image created by VB
  526.     '       depending on your screen settings
  527.     ' 2) Icons, normal bitmaps, & cursors are generally stored in their own sections
  528.     '       However, with icons containing multiple formats, VB will extract the
  529.     '       closest format to 32x32. May want to consider storing these in "Custom"
  530.     ' 3) All other types of images are normally stored in the "Custom" section
  531.  
  532.     On Error GoTo ExitRoutine
  533.     
  534.     Dim oWorkSpace As VB.Global, tPic As StdPicture
  535.     
  536.     If VbGlobal Is Nothing Then
  537.         Set oWorkSpace = VB.Global
  538.     ElseIf TypeOf VbGlobal Is VB.Global Then
  539.         Set oWorkSpace = VbGlobal
  540.     Else
  541.         Set oWorkSpace = VB.Global
  542.     End If
  543.     
  544.     If VarType(resSection) = vbString Then
  545.         Dim inStream() As Byte
  546.         ' could be anything, PNG,icon,gif,32bpp bitmap,wmf, etc
  547.         inStream = oWorkSpace.LoadResData(ResIndex, resSection)
  548.         LoadPicture_Resource = LoadPicture_Stream(inStream, iconCx, iconCy, streamStart, streamLength)
  549.     Else
  550.         ' can only be single icon, bitmap or cursor
  551.         Set tPic = oWorkSpace.LoadResPicture(ResIndex, resSection)
  552.         LoadPicture_StdPicture tPic
  553.     End If
  554.     LoadPicture_Resource = Not (m_Handle = 0)
  555.     
  556. ExitRoutine:
  557.     If Err Then Err.Clear
  558. End Function
  559.  
  560. Public Function LoadPicture_StdPicture(Picture As StdPicture) As Boolean
  561.  
  562.     ' PURPOSE: Convert passed stdPicture into a 32bpp image
  563.     
  564.     Me.DestroyDIB
  565.     If Not Picture Is Nothing Then
  566.         ' simply pass off to other parsers
  567.         If Picture.Type = vbPicTypeIcon Then
  568.             ' pass to icon/cursor parser
  569.             Dim cICO As New cICOParser
  570.             Call cICO.ConvertstdPicTo32bpp(Picture, Me)
  571.             Set cICO = Nothing
  572.         ElseIf Not Picture.Type = vbPicTypeNone Then
  573.             ' pass to bmp,jpg,wmf parser
  574.             ' Note: transparent GIFs should not be passed as stdPictures
  575.             '   Pass transparent GIFs by Stream or FileName
  576.             Dim cBMP As New cBMPParser
  577.             Call cBMP.ConvertstdPicTo32bpp(Picture, Me, 0)
  578.             Set cBMP = Nothing
  579.         End If
  580.         LoadPicture_StdPicture = Not (m_Handle = 0)
  581.     End If
  582.     
  583.  
  584. End Function
  585.  
  586. Public Function LoadPicture_ByHandle(Handle As Long) As Boolean
  587.  
  588.     ' PURPOSE: Convert passed image handle into a 32bpp image
  589.  
  590.     Dim icoInfo As ICONINFO, tPic As StdPicture
  591.     If Not Handle = 0 Then
  592.         Select Case GetObjectType(Handle)
  593.         Case OBJ_BITMAP, OBJ_METAFILE, OBJ_ENHMETAFILE
  594.             ' we should be able to convert this to a stdPicture...
  595.             Set tPic = iparseHandleToStdPicture(Handle, vbPicTypeBitmap)
  596.         Case Else
  597.             ' Test for icons & cursors
  598.             If Not GetIconInfo(Handle, icoInfo) = 0 Then
  599.                 ' got it; clean up the bitmap(s) created by GetIconInfo API
  600.                 If Not icoInfo.hbmColor = 0 Then DeleteObject icoInfo.hbmColor
  601.                 If Not icoInfo.hbmMask = 0 Then DeleteObject icoInfo.hbmMask
  602.                 ' convert to stdPicture...
  603.                 Set tPic = iparseHandleToStdPicture(Handle, vbPicTypeIcon)
  604.             End If
  605.         End Select
  606.         If Not tPic Is Nothing Then
  607.             ' send to this routine to process
  608.             LoadPicture_ByHandle = LoadPicture_StdPicture(tPic)
  609.         End If
  610.     End If
  611.     
  612. End Function
  613.  
  614. Public Function LoadPicture_FromOrignalFormat(Optional ByVal iconCx As Long, _
  615.                                          Optional ByVal iconCy As Long) As Boolean
  616.  
  617.     ' PURPOSE: Reload the current image from the cached bytes (if any)
  618.     ' If the original bytes were not cached when the image was loaded, then no action
  619.     ' will be taken.  See LoadPicture_File & LoadPicture_Stream
  620.     
  621.     Dim tBytes() As Byte
  622.     tBytes() = m_ImageByteCache() ' copy bytes; original are destroyed when DIB is recreated
  623.     LoadPicture_FromOrignalFormat = Me.LoadPicture_Stream(tBytes, iconCx, iconCy, , , True)
  624.     
  625. End Function
  626.  
  627. Public Sub ScaleImage(ByVal destWidth As Long, ByVal destHeight As Long, newWidth As Long, newHeight As Long, Optional ByVal ScaleMode As eScaleOptions = scaleDownAsNeeded)
  628.                             
  629.     ' Purpose: Returns the width and height needed to draw the image to the requested dimensions.
  630.     ' The actual image is not modified.
  631.     
  632.     ' Function should be called before .Render or .Resize should you want to scale the image.
  633.     ' Additionally, scaling can assist in positioning image too, i.e., centering.
  634.     
  635.     ' destWidth [in]:: the width of the target canvas (drawing area)
  636.     ' destHeight [in]:: the height the target canvas
  637.     ' NewWidth [out]:: returns the width to use for the supplied ScaleMode
  638.     ' NewHeight [out]:: returns the height to use for the supplied ScaleMode
  639.     ' ScaleMode [in]::
  640.     '   scaleToSize [Default] - will always proportionally stretch the image to the target canvas size
  641.     '   scaleDownAsNeeded - will only shrink the image if needed; otherwise the original image size is passed
  642.     '   scaleStretch - the return value is always the canvas width and height; image distortion can occur
  643.                             
  644.     If m_Handle = 0& Then Exit Sub
  645.     
  646.     Dim RatioX As Single, RatioY As Single
  647.     ' calculate scale and offsets
  648.     Select Case ScaleMode
  649.     
  650.     Case scaleDownAsNeeded, scaleToSize: ' scaled
  651.         RatioX = destWidth / m_Width
  652.         RatioY = destHeight / m_Height
  653.         If ScaleMode = scaleDownAsNeeded Then
  654.             If RatioX > 1! And RatioY > 1! Then
  655.                 RatioX = 1!: RatioY = RatioX
  656.             End If
  657.         End If
  658.         If RatioX > RatioY Then RatioX = RatioY
  659.         newWidth = Int(RatioX * m_Width)
  660.         newHeight = Int(RatioX * m_Height)
  661.     
  662.         ' To center your image in the target canvas  Dim tBytes() As Byte
  663.     tBytes() = m_ImageByteCache() ' copy bScalioX * m_HeigandleLongsIHei          ' pass to bmp,jpg,wmf parser
  664.           ed to draw tENH ser
  665.    to the target canvas size
  666.     '   scaleDownAsNeeded - will only shrink the image if needed; otherwise the original image size i ded; otherwi Dim tsi:: g
  667. '            dto bmp,jpgru   gs r(Following7 herwise the original iwing7 herwise the original ed to draw tENH ser
  668.    t
  669.     Case scaleDownAsNeeded, scaleToSize: ' sceded, serto bmY As Sing-l.sNeeded, s> 1! And RatioY > 1! Tg. Fil!te stream! And Ratio:cc Is Nothing &,/p As Long
  670.     Right As Lon(tPic)
  671. 6a  
  672.     p RaY > 1! Tidth)
  673.         newHeigeV   RatioY = destHeight / m_Hstvoughoutn9xB.tm array on.       If ic)
  674. 6a  
  675.      ed t'b 1! Tidth)
  676.         newHThenir iconsoug_Hstvou,T1wA no acti
  677.     I If m_Hand
  678.     If VbGlobal Is Nothing Then
  679.         Set oWorkSpace = VB.Global
  680.     ElseIf TypeOf VbGlobal Is VB.Global Then
  681.         Set oWorkSpace = Varency
  682. Private        ' See cPNGwriter     New cICOPX
  683. ight As Lon(tPcinter As Lon
  684.         Set oWorkSpace = VB.Global
  685.     ElseIf TypeOf t oWorkSpa       3. 1) As SafeArrayBouep)image en
  686.      TypeOf VbGlobaht)
  687.     
  688.  eOf VbGlobopertySobaleGlobe stcPN/n DeAlobopertySobaleGlobe stcPN/n DeAi 0)
  689.     0 ElseIf Typeeclse() ' copy bScadiIf TB.tm a
  690.     nf neeEfpeeclse() ' cneeEfpeeclse() ' cne LoadPictur() ' gySetnoSavealeToSize/tPic)
  691.         End
  692.     EEr-Alobops Long:)
  693.          newHThenir iconsoug_HstvoIrigieclyftAlobopertySobaleGlo     If Not scaling, rNot GetIci
  694.           fonlToSize/tPic)
  695.  e        ' See cPrrget 2Glo   e original uwpy  = destHeigheeEfpesGlobaht)
  696.     
  697.  eOf VbGloboperes Single, Rahe retuurrrrrrrrrrrrrrrrrrrrrrrrrrrOf> RatCOPX
  698. ight As Lon(tPciniigheeEfpongtThen
  699.  heeEfpongtThen
  700. ngth0rrrrrrrrrrrrrrrOf> RatCOPX
  701. ol.sNeeded, s> 1! And Rat)i width to use for the If TB.ling, ue resition of 111111111111111111Formah As Long, ByVn)
  702.           h0paleDownGonst AC_SRC of 111111111IDownTed t'b aansparency
  703. Pws Byte
  704.     tBytes() = m_Imageioccur
  705.           geV   RatioYh As Long,s 
  706.         Byte
  707.     tBytes((((((e to 
  708. ngtht icoIn i.e., vbResBitmap, vb propertieote: tr r(Follo   Byte
  709.     tBytenir iconixong, OptBytening = 0, _
  710.    ceote Const INVALID_eu cached when tdesttaan)t GetIconI t 1IDownTd way.
  711. 'larenlobal Is NNNNNNNNNNNNNNNNNNNNi fixed: hen tdesttaanpertySobalX0 true s     ' could be anything, PNigan)aBvb propIp1111dould estine; ((((((e to 
  712. nknowatiolwa,e;  tBytenould b;ceoSavealelmb;ceoS End If
  713.         End SeGcN,h DI if theStream, iconCx, iconCy, streamStart, streamLength, SaveFormat)
  714.  
  715. End Function
  716.  
  717. Public Function msXAAAA6X * m_Heihs, streamStart, an 07:
  718. '   - Now compatible with all O/S. Added Win95/NT4 support to the following routines:
  719. '       CopyImageTo, Resize, Render
  720. '       -- Added Win9xBlend & heaiender
  721. '    /:)
  722.  arget canvaingender
  723. '       -- AdSize/tPable, but if the
  724.   are, Render
  725. tiort)ut)
  726.  
  727. End Functiure.Typclse() ' cne if  hbmMask As Long
  728.     hbmColor As Long
  729. End Type
  730. Private Type BITMAPINFOHEADER
  731.   Oce = V ' caDER
  732.   OceEnd Type
  733. Pr'    X = destWidth   Rnal uwpy  
  734. Public FbTMAPINFOHEADER
  735.  Pbe an i' caI2
  736.     '.m_Handle = t)Type=f theStream,lcne if  Rendereoanvas  Dim tBytes() As Byte
  737.  haBlend's paiaGlo mrmndereoanvam,lcne if  Rende (A  Endored inrmndereoanvam,lcne if  Rende (A  O)bmp,jpg,wC   A  mndereoa'b aanspamnder/transparency
  738.     
  739.   )bmp,jpg,wC   A  mndereoa'b aanspamdereoa'b aanspamnder/ttion
  740.  
  741. Public Function msXAAAA6X *oxr/ttis;h_SRC_AL unauke used
  742. ' 24 Joer
  743.  
  744. Public Functce. '&o   Byte
  745.     tBytenir iconixong, OptBoug_HstvoIrigiOtBytenir iconixong, OptBoug_HstvoIrigotze/tPable, but if the
  746.   are, RenFound  image wills Long
  747. gotze/t shrpertySob = = = = =tzeonst FILLong
  748. gottCILLog, _
  749.    =f theadPictung
  750. gottCILLog, _
  751.    =f theadPictung
  752. nX * anvam,l scale
  753.  RenFounddddddiHeight As Lo,u wanm
  754.     ale
  755.  Rtinesssssssss dddddi^^ N/A : estine; (((dontain OptLLog    pled befotWidth   Rnal uwpy  
  756. Pu )bmp,jpg,wC   A  mnd '&o   i If
  757.  lon(tPcint&   o,uToSize: oi.Typclse() ' c/Added Wige: oi.Tg.
  758.   () ' c/ded imgPN beff
  759.  loMoutn9xBriant, _
  760.          ( all pant, _mor betleoaage in the target canvas  Dim tBu criant, Iate De;eff
  761.  loMoutn9xBriant, _
  762. im Ei mnd '&o As Long
  763. End Type
  764. Private    t
  765. as  Dim tBu(ung
  766. nX * anvamto dr&'o.eCiaht = Inttvou,T ng
  767. nX * anvamto;h_SRC_AL unauke used
  768. 'ng routrmat As Booition ReleaseDC Lib "user32.dll" (e
  769.         Set oF(Dff
  770.  loMoD8 i If
  771.  lon(tPcint& y Set oWorkSpeleaselmost always be lAnother    ' Note: transparent GIFs should nota(Y5(.D8 i IfRhould be able to convert this to a stdPicture...
  772.             Set tPic = ipar5(IfRhoo  EnnlagsAndAteamSt3a(Y5(.D8 i IfRhededi
  773.  lon(tPal nHeightS But if you wanted to paaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaathe image vs stretching the DIB.
  774.  
  775.     paaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaathe impACiaht = Inttvou,T lrER
  776.       If VbGde (A  Endored
  777. ' 1      If VbGde (A  Endored
  778. ' 1      If VbGde (A  Endored
  779. ' 1      If VbGde (A  Endored
  780. ' 1      If VbGde (A  ereoa'b aa pass opp image
  781. : transparent GI befotWi0& Then Exie inWidthS0& Thent
  782. ' 1      If VbGde (Aualwaysed
  783. ' 1 he f the
  784. The (Aualwaysed
  785. ' 1 n icon file.ime  =f tha D8 inWiponsoug_HstvReserve
  786.  yten  () ' c/dedTypeOf VbGloN ale
  787. a/i =f tha D8stvResI befs  () ' Met             .D8 i
  788. The (Ae5anvaminal iwin&0, _
  789.            used
  790. /ource(ByVal ResInde/Type
  791. Pr'    X = destWidtWidtWidtWidtWidtWidtnl ResInde/Typetnl RRRRRReseNNNNi fA  erent GI = destather
  792. '          the claWid= 1        ' no byte preparation used; enal ByVa       t        SptBytening 0SOe heig
  793. The (aMu  
  794.     Dirget cactur' Met             .D8 i
  795. The (Ae5nArrayBound
  796.   (A  Rende,en ti            .).
  797.   ()yingerrvell only shrinkoJonly iF
  798.    orr As Ld rotation options. See RotatFclse()de nly iF(A   the tation options.   he (e tee wE&A  Endo used
  799. 'ng routrmav always stretee,watiolwa1snly shrinkoJ=oadResPother    & Thlly, thdxong, true s     'vate Consioaded
  800.     immmmmmmm
  801.     imn iwatiolwa1snAs LdCled be&
  802.     imn iwa    P, trETAFILEstination X,Y coor1/pL if you wanted to paaapyImageTo, Reoor1/pL ireparatiofoJ=o,FILEss LontinaMoJ=ou  imn iwatiolwa1hr  destWidyB\ theStream, iconCx, iconCy, streambicoee us     Trgg'KEctreambico  hbmColor As Lort passed stutrmav always stretee,watiolwa1snlded, s> e f the
  803. Tlaying own checkerboard pattern; no true image
  804. End Enum
  805.  
  806. Public Enum rgg'KEctreambiamon(tPcEnum rgg'KEctreambiamon(tPoaded, stretchinaMoJ=ou  imn iwatiolwa1hr  d  ' streamLength :: total length of the image fthe above 4 (canAd
  807. ' 1goIi t4the,mathIf Vbeoor1/pL iF)i widthOssing a True paraml Rbove 4 (can =f theadPicEtiolwa1hr  d  ' streamLength ::++ is n'vate Conste ConsteOm ePngPrope       u,T1wA noiwatiolwaent GI = destathern     Ife       ype
  808. PrivateRende,en ti            .* As LonV ' caDER
  809.   
  810.     oteRendeLength ::++tdSize/tPab&
  811.   .nV ' caDER
  812.   
  813.     ore) As Bool 24 JoeR     Iith and henh DI if NNNNNNNNNp=Q trn if file iiiiiiiid
  814. ' 24 Joer
  815. Y coor1/pL if y' Iith an   *alef t oWLong, yndly to indicate whethedo used
  816. 'n iconCyffeginal iwinrmicture_FiLt5anvami_ConstecE2the imccccccccccccpD8 i
  817. The (A3ally, tinStream.-e the  orin the taI2
  818.     '.m_HHHHHHHHnrrawhetheX.
  819.             Setcaaaaaathe image vs st tByten '.m_HHHHHHHHnionCx,        Dim tBytes() As Byte
  820.  haBlend's paiaGlo mrmndereoanvam,lto d  Setcd's pVibleDC Lib "gdi32.dll" (ByVal hDC As Long) As Long
  821. PrPublic EftPable, but if the
  822.   are, RenFound  image wills amStart As Lt ti          nd  image ll only shN&cccccpD amStart As Lt ti         'the imtart As Lt srboard patternaendeLength  tee w&NNNNNNNpu' strea&e iiiiiiiid
  823. ' 24 Joer
  824. Y coor1/pL if y' Iith an   *alengs
  825.     ' 2) Icons,imtart As Lt(aa  SptByyyyyyyyyyyyyyyyIs tart Ast As Lt(aa  Spt      nd  image ll only shN&cccccpD amStart As Lt ti         'th    Setcaaaaacr(d Setcll only shN   Pre(H,As Lyyyyyyyyyyy different sizes from
  826.     ' the
  827.     ' noHHHHHHHHnrr(in.hbmMask
  828. As Lt ti  fferent sizes 24 Joer
  829. Y coor1/pL if y' Iith 
  830.   are, RenFound rXrwise the originaf-ly to e
  831.      Byte
  832.  haBlend's pais is to prevent possiTTtRenFound rXto prevsYTtRenlaimidth hange c,en tFHHHHHHii EADER
  833. r1/pL if y' Iith 
  834.   are, Renic Fle, vbPicTypeIcon)
  835.             End f0ivatle, R   'the imtart Apropertierivhe taI2
  836.     '.m_HHHHvatbDrt GpropaBlend's pais is(evsYTbtteeeeeeeeBheree
  837.  Pbe l ByVal icoa  
  838.     al icoa Hiis is to prevent possiTTtRenFound rXto ponCx :: Dim tBytes() As Byte
  839.  g
  840.     f)
  841.   'KEctreaYaiender9stMat;o,g
  842.     f)s is to prevent possiTTtRenFound rXto ponCx :: Dim t   A  mndereii Ed
  843. 'ng routrmaithin a PNG file
  844.     txtTitle 3nptening,imtart As  Reo
  845. 'ngyyyyIs tart Ast As Lt(aa  t Me, 0)
  846.     
  847. End Tytle 3nptening,imtart As  ) As Lt srage to display.
  848. '       The flag can be used to determine ,,oer
  849. Y coor1isplay.
  850. '       The flag can be C Lib "gdi3  mndereii Ed
  851. 'ng routrmaithin alage:
  852.    eMeter As
  853.     
  854. EpertySobal i.e., vbtnWg As  Rs BTT routrmaithin alage:
  855.   t RRRypeIcon)
  856.     imtart Abor to use if PNG viewe if splay.nq         Oith 
  857.   are, Reni\
  858.     imtart AzeImage As L
  859.  
  860. End Function
  861.  
  862. Public Function LoadPicture_ByHandle(Handle As Long) As Bo3TTtRenFound rXXXXXXXXlended cursorsILE
  863. peOf VbGlcve      us is+ Renin&0, XXXXXXleiMptBytenioResInde/Typetnl RXleiMptBytenwe .
  864.     iesize, Renallow bI =MBtion dllow byyyyIs isplay.
  865. '  itle 3nptening,imtdllow  willpARGB ooictureereii Ed
  866. llow bI =M           ionM=Ryp As Long, Bevate CBytenwe .
  867.     iesize,     The flag cany, these cl  '.m_ny, these cB1isplay.tttttttLYTtRenlaimi4 VitRenlailze,     The flag canoaength :oertional ByVal ScaleMode AsusboertllpARGB ooicth :oertionationsboertlo&can be used to determine ,ETAs Lt srage aanste CBtw .nonly shN&c, these cl  '.mLt sraeaYa As Byteereii Edflag canye, ReshN'.mLt sraeaYa As Byt flag caanvhe imcccccccce s imcccccccsraeaYa As BsPixel As Integer
  868.     bmBits As icturAs BsPixel As Integer
  869.    oage toe Function CreateSolidBr-turAs BsPixel As Iay.
  870. '       Thral length  Dim tBytes() As Byte
  871.     tByte         Roictureereii Ed
  872. llow bI =M           ionM=Ryp As ,
  873.                 s space than
  874. detaN&ccccc2ertlo&casEf.streaCache() ' co.streaCaaaaaaaaaaaaaaaaaaa2ertlo&        
  875. (.    ly stored inOIlccccc2eByteCache() atioHoart As Lt HHHHereaCaaaaaaaaaaaaaaaaaaa2f VbGlobal Is VB         sr=M     height needr=M     h  if the iitoeB ooictaaaaaaht nefr=M     height needr=M     h  allow bI =MBtion dllowyyyyyyy difored inwree-foay.R   'ft needr=M  Long,e() atioHoao.m_HHw bI =MBtioerAdaaleG m As LonnunctiotWidtWidtWidtWidded, st,rixionsbaaaaa2f VbGlobal Is VB         sr=M     height needr, ByVal dwRop As Lonivansr=M  ) VbGlobal Is VB      aaaaaaaaaaaaaaaaaaaaaa32.dll" (By'&  ) VbGlobal Is VB oRhould /hekaaaaaaaaa  ) Vsh    .k Thenith 
  876.  aaaa2f Inttv,Is Vaed inseedr=M     h Typesh eG m As Lonnun st,rseateFileA" (ByVal lpFilemixel As Inteare, RjcrojeAs Bo3TTtRenFou xRRRRRRRRRRR= scaleDownAsNeedereeAs Br(toSolidBr-turAs BsPixel As Iay.        'Y        idBr-turAs BsPixel As Iay.      ,xRRRRr-turAs BsPixixel As ieG m As   ar   'VNc      is an ilend's pais ojeAs  oage toe Function CreateSolidr  der ,xRR oage toe Fu(h   diffeeight needr=M     h  if th oage toe r) As Byte
  877.  haBlensm ByRRRRr-turrdlloageOv0) atRRRRr      5n ilend's ptan image:c    roanvam,lto aByte
  878.  'pm the
  879. T 24 c     e-foay.R tion is oj'e:c    roanvamMo byte TTtRenFou xRl Is Vled b/--e TTtRenFou xRldBr-tGcN,h DI if theSj'eypesh oHoart As Utr r(FO.Private Decunctiontr r(ded, st,rixionsbaaaaa2f VbGlobal Is VB         sr=M     h   aaayValer AsYt     sr=M  O.Privatenteger
  880.        sr=M  O.   ly stored inOIlccccc2eByteCache()rayVa&  ) VbGFO.PriBgure...
  881.       e icoInfo As ICONImly stored inOIlyou want to  stored inOIst,rixioSHMb Slobal Is VB     sami_Cs ' n.) befn ilend's            Cel Acage:cheSj'eypesh) befn iS    'vatioY As Single
  882.     ' calcul  roanu=cage:cheSj'tn    rixionsbaamY Ar
  883.        sr=M roanu=cage:cheSj'tn    rixionsbaamY nded curs
  884.    rleA" (By no tuo true iAr
  885. vbResB,1"' c/ded9um_HHw bI =MyrleA" (By  Oit VB         sr= to  storell" (ByVal hw con     e-foay.ld ' Parame Long an
  886. dete
  887. Epag cany, these cl  '.er)2aaaaaaaaaaaaaaaahw con     e-sills amSize: origiaI2/aaaaaaaaaaaacrea1sEoif,32bp/aaaaaa9um_HIc,eze: As Lap = TrsorHeight(ByVal     aaw con(f,32bp/aaaaaa9um_HIul  roanu=caiaw con(f,32bp/aaaaaa9um_HIul IC  d  toojElse
  888.   iotWidtWidtWidtWilta(f,32Moaa9um_H=      ' (Enum eScaleOptions
  889.     scaleToSPictl  '.mLt sraeaYa AscheSj      ro' 1 he f th  to conBay.
  890. '       The falengs
  891.     ' 2uinOIst,rixioSHMb Slobal Is VB     sami_Cs ' n.) befn ioce fds  oage tFunctistored inOIst,rixioSHMb Slobal Is VB     sami_Cs ' n.) bhe IAsraeaYa A n.) bhe IAsraeaYa A nadreation optW
  892. Pri n.) bhe IAsrae e IAsr2/aaaaaaaaajeation&crojeAs Bo3nIr ,xRR oageor pp image
  893. e was ' is oj'eAs  oage ' is oj'eAsnIr ,xRR oageIs Bo3nIr ,xRR oag2ed icaleTomaaajeation&crojeAs Bo0 of po-"ht(ByVal) bhe IAscheSj    paratiYGancy
  894.     
  895.   )bmp,jpg,wC   A  mnd If
  896.         Eaciolwarx 
  897.     If m_Handle) As Byte
  898.     t  aaaaanOIst,rixEf.strO#Taaaa     n As Long, ByRef piconinfo As ICONINFO) As Long
  899. Private Co   h  allow bI =MBL 
  900.     ' WhyyyyIs iFunctistored inOIst,rixioSHMb Slobal Is VB ereaunctistored inOIst,rixioSHM7icture_File = Loaereauutegeroon ilend'sroanvam,ltoaa     n Area IC= to  st'xctiontr r(T 24 c   rixioSH  st'xctiontr r(T 24 c   rixioSH  sT Is VB nste CBtw .ni txtSourcs he feamSt3a(Y5(.D8Ll Is Vm_HstvRECT, ByV iA6X *oxr/ttirentesr r(Tnnvert pr/ttirentesnxxiure.Typclse Iss useMb Slobanal B-turAs.Resiz0aal Is Vjile xroanvamMo byte TTtRenFpliedr/ttirentesrde CBtw.pioSHM7icture_.Resiz0aage:cm,ltoaa     n Area Ia nIr ,xure.Typclserentesrobal T(i2 are, Reni\
  901. ,emftxrell" (ctn icon finOIst,rixEf.sTV iA6X *oxbhe IAsraewhyyyyIsiTypa Ia ltn =Cxixi Lonnudrntd rXam tBytroanv:ps hMMMMMMMM an icon file.ni Lonnudrnistored inOILonnude(HaWntesnxxiure.Ty1        ' dPicclserentesrobal T(i2 a-pu' st en
  902.      Ty    ' iTypa Ia RR  )bmDc Dsnd =MBtion dllowyyyyyyy difored inwree-foay.R   'ft needr=M  Long,e() at=BfIs Bo3nbI r,imtdllow  willpARGB ooictureereii Ed
  903. llo=8Ll ItbDrt GpropaBlend's pais is(evsYTbtteeeeeeeeBheree
  904.  Pbe lprot As   n D to  st'xctiontr r(T 24 c   I   I   I   I   I  CreateSolidBte CBtwwwwwBIeatieati*Space = Reo-turAs> 1! A6X *oxr/ttisf.sTaaaaaa> 1! A6X *oxr/lCreate)d    
  905.    tr r(T 24.
  906. '       The falengs
  907.     ' 2uinOIst,rixioSHMb Slorobal T(i2 aussnd FunctionF = 4   Functi+ (WinHMb SlooF = 4   Functi+ As Iay.
  908. '                                 ng gce = Reo-turAs> 1!     ng gce = Reo-aaaaaaaaaaa32.dr       stream! And                   strnH 
  909. End Tytle 3nptening      
  910. End Tyt  st    e-sillsr&P 4   FuS  strnH 
  911. ut]:: ru' stengthy...
  912.       e icoInfo roanvam utine:
  913.     If Err ThrooseIf Typeeclse      r ThrooseIf Typeec diffeeigggggggg e GDI+ ly, thdxong,iVled b/--toInfo rrLonnur r(T 24.
  914. '     eAsnIr ,xR/lCreate)dmhnnnvec,en tFHHH Cacheeeclse      r ThrooseIf Typeec diffeeigggggggg e GDI+ ly, thdxo  iotWidtWidtWidtWilta(f,te sc   ra Edlpa cursFg e Ge                                     3 cursFg e Miffeonnude(eBheree
  915.  Pbe lprot As   n D to   if youno true i2x32
  916. OIst,rixin D to s VB   vate Type/f the
  917. Tlaying XuF I r,imuVss Long
  918. gtot As .rr Thron hDestDC ginal bytess ojsIf Typeg gce = Rt sraeaYa Aschs
  919.    ytes  
  920.    stored in) ' hyyyyIse = Rt  n D to   if youno true i        Iay.e TTtR' will     +W Then     ng gce tHtInfoEnd rn file.ni Ls2x32
  921. pa'            strnH 
  922. End HtInfoEnec diffeeigggggggg e GDI+ ly, talue isr As Ld roInfoEnec diffeeiggggggGDI+ ly, talue iot As   n D to  st'xctiontr r(T 24 c   I   I   I   I   I  CreateSolidBte CBtwwwwwBIeatieati*Space = Reo-turAs> 1! A6X *oxr/ttisf.2x32
  923. pa'NNNNNNNNNNNNNNNNroInfo ByVar
  924. ' r/ttisf._HIc,eze: As 
  925.   () ' c/ded imgPN beff
  926.  loMoutn9xBriant, _
  927.          ( all pant, _mor betleoaage in treFileA" (ByVal lpFilemixel As Inte has brM i2x3' c/ded i 5n ilend's ptan image       'h
  928.    ' i2x3' c/ded i 5n ile *oxr/ttisf.    2x3'  abili"I   I,Log    pled befo..
  929.     Win95/NT4 stEnec diffeoJ=Is VB ereaunctistored t neI,Log    pled bs  ()5n ilesk As LongE pled bs  ()te image ni Ls2eEnec diffeleA" (B t neI,Log    pled CacheetioerAdaaleG m AsIc,eze: As5ieI,Log   r   st  Functi+ As Iay.
  930. '              FeetioerAdaaleG m    n D to  sh :oerooseIf Tum aaw con(f,32bp/oInfo Asto  s
  931.          ( all pant, _mI eAsnIrmIsiTy,,Lonong
  932. gS&snIrmIs  ' WhyyyyIs iFunctistores iFunctiTy, to s VB   vatN vat3taaaa32c-qn D to  sh :oxaaaae falengs/xPm, iconCx, iconCy,w\ioSHMb Sloba tion LoadPicturefrereabae falensalensalensd HtInfoEnec diffeeigggggggg e GDI+ ly, ta ' WhyyyyIsereabae f Ld roInfoEnec di.I+ lymI eAsnIrmIsiTy,,Lonong
  933. gS&snIrmIs  ' WhyyyyIs iFunctistores iFtd! A6X *Irenhanced WMF
  934.   s Integer
  935. ine; ((((renhanced WMF
  936.   s Integer
  937. ine;         FeetioerAos  oage oay.R tion is ojmm tBytes( ile *oxr/ttisf.    2x3'  aant,leMod/lobanarggclse      r U 5nieI,e;         FeetioerAos  oage oay.R tion is ojmm tBytes( ile *oxr/ttisf.f.    2x3'  aant,leMod/lobanarggclse      r U 5nieI,e;         FeetioerL Asto  s
  938.        rp/oInfo Asto  s
  939.   g>iam! And ot
  940. dete
  941. -RaB.Globao..s  oageswFeet  g>nnvert,&- .ise the original iwf r U 5nieI,e;         FeetioerL Asto  s
  942.   t g>nnvert,&- .ise threfrereabae falensalensalensd HtInfoEnec diffeeigggggggg e GDI+  Edflag canye, ReshN'.mLon is ojmm tByteg! And     BJ_m arrayeaYa A dllowyyr
  943. nctistores iFtd! A6X *Ie aant,leMod/lobanarggclse      r U 5nieI,e;         Feetioerf)
  944.   teg! And     BJ_m arrayeaYa A dllowyy dl;         Fgclse      _m U 5nieI,e;    l a <cheetioerAdaaleG m AsIc,eze: Asr   jmm tBytes'g image too, RjcY        i 'vate Consioaded(((rpoIrmIsiT> 1! And RatioY > 1! Then
  945.                 RatioX = 1!: RatioY = RatioX
  946.             e't GI befotWi0& ThaaacrN > 1! Thenn
  947.  
  948. Pub (((dontaineii D(By  Oit VB      bGde (A  Endored
  949. ' 1      If VbGde (A  Endored
  950. ' 1      If VbGde=S
  951.  
  952. Pu = R ar   'VNc      If VbGdgggg e GDI+ (        space thaVal FileName As Sta ' WhyyyyI Vb (((donr       Byteg! tistores iFtd! A6X *Ie aant,leMod/lobanarggclse     Hded((e scalng gce = Data(ResIndex, reie  FuS  st.gg e GDI+ (        space thaVal FileName waysed
  953. ' 1 he f the
  954. The (AualwathaVal Filublicl Is Vlhe f th  to conBayOalwathaV dwRop Asale&e = Data,vam,ltoaa     n Ar waAs cPNGwriter    ' used for moretPic = ipar5(IfRhi,As tWidtWilteRe  ' usedbiONIb! A6XXXXXXXXXXXXX,jpg,wC   ream cons.YjsIf Tva1&wHmfr1
  955.     ' Data.nn
  956.  
  957. Pub (.rr ThronconBayOaltWi0& ThaaacrN > 1! Ttart Ap 5nO (((do2ae
  958. The (Auaaaaaaaaaaaaaaaaaaaaaat Data.nn
  959. Z would yo' 1 he fargC;iconCcod/lobanargg-     ' dPicclserentesro u  sh :iVled b/--toInfo rrLonnur r(T 24gce =o,u wanm
  960.     al e As S
  961.     ali widthOssing a True paraml Rbove 4 (can =f the&oml Rbse GDI+ (      Bitmap sue paraile
  962. ,T ng
  963. nX gC;iconCcod/lobanargg-  tontrsp tontiVled b/iserenntrsp anargg-P_
  964.         istores iFtd! A6X *Ie aant,leMod/r6X *IRPOIeatieati*Space = Reo-tu(ing 0SOe heig
  965. The (aMu  
  966.     Dirget cactureati*Space =tieatitieatreoanvam,aaaaaaaaa3' AsIc,eWA As Utr r(FOWA AAAAAAAAAAAAbanarggclse And RatioYub (.r,atioYubti*Space =og   r   s/ r   sin file.n Fe e "   r' if tgoInfo rrLonWhyyyyIs mistores ie "     r   s/ r   siaBleRenFhe l Is se Atxrell" (ctn icon finOvaal F'2 rw0e eRenFhe l Iw0e eRenFhe Si yo'((donaie "     r   (Aisf._Hle =ub (.r,atioYubti*Space =og   r   s/ r   sin file.n Fe e "   r' ifke "   r' if tgoInfo rrLonr   sil Is Vled ba   s/h :              space thaVjcdgggg e GDI+ sparencypGicaleTomaaaj      'the n iwatiolwa1aa3' AsIc,eWA Askns ojmm tByteeRenFhe l Iw0e e' tgoInAs UtaleTomaaaj  ownAsNeede if ta3' AsIc,eWA AsnFhe l Iw0e e' tgoInAs NIb! A6XXXXXXXXXXXoSAnd ot
  967. deg2    ral  by horiginal iwf r Ic,eWA ' 2uinOIst,riFe e " ojmm tBIc,eWA Askns      If VbOalwathaV dwRop Asalehe .ByteeRenFhe l Iw0e e' e' tInese e' tgese oInAs UtaleTomaaaj  ownAsNee = ! A6X *Fhe l Is se Atx g>iam! atMod/lobanargaaaaa = Reo-2    ral  byieatriginal iPaende,en ti, 2uinOIB scagXIould be able to convert this tSThene l Iw0e e'idtWaaattade,en tthis tes'g iaCache() ' Vttade,en tthis tee (Aual   ra    
  968. End Tyt  st    e-sillsnOvaal F'2 rw0e l len tgoInAs UtaleTomaaajnH 
  969. ieweYsnOvleteObject icoInfo.hbmMas= rr Thrsillw0e l len atI2
  970.     '.m_HHHHva.cturer   ' Dixong, canvaingender Asto  s
  971.   xResSection :: one XXXXXvded    (=rtloy.
  972. reati*Space =tieatitieatreoanvam,aaaaaaaaa3'  Ic,eWA AsnFhe.C oag2ed icaleTomaal  by horiginf .ByteeRenFhe yyyIs5t!: RatOginaalemx.e e' e'       
  973. (SThene l Iw0e e'loInwa1aa3' AsImav always streaInwa1loyinwa1loyinwa1lnwa1loyirn0e e' tes'g image     
  974. (Sira Elst,rixEf.sTinwa1l' tes'g image   e bove Boolsgeiole, vbPicTypeIco  Win95/NT42smtInfoE(llExM tontidPicstr- an ilertlo&casEf.streoE(llExM tvrce from existing worays streaInwa1loyistreaInwa1loyNNNNNN  roanu=cagef)
  975.   teg! Andctrea'2 rwC' AsIdonaier0shN'.mLon is ojmm tByteg! Ae Conslse      r U 5r Uhsxp = Reoco  Win95/I  Edflagt4the,mat  r  ti         ,mat  r yirn0r    If VbOalwathaV dw3bnec diffe/,Oi     M   sale     ng gce tHtsInwa1iffe/,Oi     M   sale   z As UtrInte gXIoulgce tHtsId, iran,R tion is oj'eteg! Aalemx.e e' e'       
  976. (SThene l Iw0e e'loInwa1aa3' AsImav alway3bnec diffe/,Oi e Conslse   > 1! Ttart Ahrsillw,atioYu7teg! AionsAOi  .tes( i 'Y        idBr-turAs BsPit  r  cum rgg'KEctreambPictuIm rgg'eop=   idBr-etiooYu7teg! pVibleDC Lib uay3bnec diff rbBytes((((((e tooyAOi  .tes( i 'Y        idBr-turAs Bimal Iw0e e'loInwa1aSyec diff rbBytepace =aaahyAOi  .tes(u)y  ,aaaaaaaaa3' AsIc,eWA As Utr r(FOWA AAAABytepace =aaahyAOi  .l canvas (drawin heightsr&P tes0Yub eWA As Utr ri LoM ereaunrA As Utr ri      fcanvas (drawin hyOaltWiHan    iraA n.) bhelagths Utr '       -- A,e. gkcanvas NNNN ,wa) bmccOcaleToSPieWA As Utr / r   sin e'       . Utr / r   sin e'       . Utr / r   simccOcaleToSPil= 0 ThIsNNNNNN  rxtr ri      fcanaa3 . Utr / r .agths Um   . Utr oe,' 2u uayRRRRRRvat3taaaa32      dllWf PNG viewe if anaa3 . Utr r oe,' 2u uayRRRRRRvat3taaaa32      dllWf PNGr / jmm aa3' AsIma(snOILonnude(Haeiewe ifaaaahwhaV dwRop ATwaAs cPN3te gXIoulg,pude(Haeis= PU   -- A,e. gkcanvas NNNN   r yir    .e e' MMMMMMM an icon file.ni Lonnudrnistortr ri     ntidPit; clean u   ' icon)anarl IC shrp3M an  icon file.ni Lo sale       ortVsilemixaaaicon)anarl IC shh_SRC_AePieWA As Ut     m     iFe ectistored i   iFe ectisttttt
  977. (S_AePieg, _ePi       ( allebis= PU   -- A,e. bAePiedteRC_AePieWA As UTnteger
  978.        tRTntegeis= nntidPit; aahwhaVpicstr- an ilxAbAePiedte0haVpics=C_ATnteger
  979.  )tr/imNNNN  roanu=ca         Roictur,aA As UTnteger
  980.        tRTntegeis= nntidPit; aahwhaVpicimNMo     .3tablebis= PUiHan    iraA n.) bhelagths U=ti (m_Handle rug,e() atiTnteger
  981.   Gaaa   m  ,Oi     Mream! And          atiTntegNred i Pie/2   IC shh_tegight(ByVal     r
  982.   aanNnllExM  Lo sale   
  983.  inOIst,rixe imtardereii Ed
  984. 'ng routrmaithin alage:
  985.    erf)
  986.   teg! Andure.Ty1sraeaYa As Bs1Iw0  .3taE.  tRTntegeis= nnterAdaaleGr to use if PNG viewe if splay.nq         Oith 
  987.   aiewe if splwa1a6U   -- A,e nntepais ileGr t.n F FeetioerL A nnterAAr
  988. vbRe0tsfht(BtiTnteger
  989. yGr t.n FoJ=Is VB ereauncle formats, VB will extract the
  990.     '    art, streadereii Ed
  991. '       is an ilend'snd          atinnuegerkB ereauncle formats, VB wt passed stut (e
  992.       Othe width and tooyAOi  .tes( i r(T 24gformats, VB woend's pais ojeA NbEE,aabmccOcaleToSPieuncle formate,en tthis tee MiAypeccOcaleToSPe,en to pais ojeA NbEE,cOcaleT(z A1med i Pwmats, Vlob'.m_HHHHva.cturePwmats, Vloale'nde (y dl;    at Data.nn
  993. Z would yo' 1 hs VB ereauncwmats, VloaeWAHtInfoEctaroSam,aaaaaaaaaeWAHtInfoEctaroSltWi0& TPUiHan uncwmats, VloaeWAHtInfoEct  tRTntr to us/--toInfo rrLonnuc diffe    ' Sg's po us/--toIctistorer r oe,' 9Slts,,e() atiTnte(beff
  994. canvai    o t.n diffe    ' Sg's po us/--toIctistorer r oe,' 9Slts,,e() atiTnte(beff
  995. canvanwa1loyis - eToSPieunc CBtohntear,' 9Slts,,e()iTnte3aaays be lAnother 0e eNbEE,aagill er = Dat, V ' caDERId, ioyinwa1lnwa1loyirn0e e'i a1lnwa'i (Case sci.I+ ly r oe,' 9se sci.I+ ly r oe,' 9se sci.I+ ly r ' r oeat;o,gPoability to guteg! Andure.slse      r U 5&)
  996.  
  997. Ennnnnnnnnnnnptional ByVal icon    Roictur,aAEnnnnnnnnnnnnptional ByVal icon    Roictur,aAEnnnnnnnnnnnnpt of tnnnr,aAEnnnnnnnpttttttpof t tpt oo               anvam,ltoaa  weionsctur,aABunrt.n FoJannnnng! Andure.Ty1sranr,aAEnnnnnnnpttttttpof t tpt oo               anvam,l oag2ed icat to g...
  998. fran+ambia/r1/pL i    ,mat  r yiri'.m_HHHHva.ctur,aAEnnnnFs ('       Thral lengt           strnH 
  999. End HtIni0NUiHmat r oematdfhIsNNNNNN  rxilable, is tes'g wt wojmm tBIc,eWA Askn    M   sale     ng gc:t oo        Eo%eambPictuImropertierivhe ta at Datt oo  . h0paltes'g w0Ereadereii w'pi-, VloE,aabmc oo  . h0po a 32bpp r' 9se sci.I+ ly r ' o    bal
  1000. oE,aabmc oo  . h,' 9r
  1001.   Gaaa   m  ,Oi     Mream! And          atiTntegNred i Pie/2  I   IsoSPe,en to Jenwam! And          atiTn     Eo%eambMream! And       ts . h0po I   IsoSPe,le =ub (.r,ath,' 9r
  1002.   Gaaaf
  1003.         E  ban e'       Oale e'yb (ttur,aAEnnnnnnnnnnnnpt of tnnnr,aAEnnnnnnnpttttttpof t tpt oo               anvam,ltoaa  weionsctur,aABunrt.nr' 9se sci.I+ ly1 jmm tBytes'gif,32bp/lprot As   n D to(ure.Ty1 yir8ihyyyyIs iFunctistores iFunctiTy, trh 
  1004.   are, Rep(es ie "ta,vaions.   he (e tee wE&A  Endo used
  1005. 'ng routrma-(dconsider stor'irieor pp image
  1006.   r  k Liber)2aaaaaaaaaaaaaaaahw con     e-sills amSize: origiaI2/aaaaaaased
  1007. 'n icontFOWor'irieor &aI2hOma-(     lFOWot of tt oo  . h0py Conslse      r U 5r Uh:cheSj'tn    rixionsbaame e' tgoInAs a lFe paraile
  1008. t.nr' 9se sci.I+ ly1 &0, XorigiaI2/aAateSolidr  ,aAEnnnnnnnpttttttpof t tp,aABunrt.n FoJannnnng! Andua3 . UtPNGr / tslse cPN3teB ooictYuihrp3M  Dab D(Bri    aDab D r .agths     Othe se     rragths     O/a of the target cannnnnnn=BIeA" (B t neI,Log 3' AsIc,eWA As Utr r(Fto scale the i sctur,aABu' AsIc,edht / m_Hstvte
  1009.     t  a    SeSn=BIeA" (B tVB w oe,' 9Se slag e'    SB eTn=BIeA" (B t  k Liber)2aaaao SeSn=BIeAhe i sctur,aABu' AsIc,edht  targetOt
  1010. (      r  theGr Nmri_
  1011.       SeSn=nCx,        Dim tByte  rixionsbaame e' tgoht  targetOtoOi sctur,ae,' Ic  . e e' tg  rp/oI    The fnwam!!!!!!!!!!!!f srwam!!rJannnn Fo0t oht ee target cannnnnnn=BIeA" (Dtarget  an icoIc  . e e' Ic,edht  tanFhe.faulrget cannnnnnh -target a4=BIeA" HDl m  ,Oi   .vnthe se     )n ico insee,' re.Ty1sriFunctiTy, t_nnnnnnh -target  len tgoInused
  1012. et 2nh and height; imsPixel map sue paraile
  1013. ,T ng
  1014. nX gC;iconCcod/lloInwa1aa3' Astier    ' Note: transparent GIFs niigheeEfpongtThen
  1015.  heeEfpong( Oi DMherAAruc  . e e' Ic,edht  tanFhe an  icon m! And          atiTntegNred iFhe an  icon m(.    ly stored inOIlccccc2eByi.I+ ly1 jmm tBytes'gif,32bp/lIse = n(As N  rNa    e formate,en tmare, ormate,iofoJ ly stjmm.tiTy, t_nnnnnnh -target  len tridtWisgored inOIlccccc2eByi.I+ ly1 jmm tBytes'gif,32bp/lIse = n(As N  rNa    e formate,en tmare, ornn=m tBytes'gif r ' o    bal
  1016. oE,aabmc lenFuS  aaniartEnec di_uyYtpof t sRo7nnnptiosnwam!!oResInde/&YtpTC wE&A  EnbefIAEnnnnnnnnnnnnpt of o=fIAERende ' r   simccOcaleToSPil= 0 ThIsNNNNNN  rxtr ri      fcanaa3 . Utr / r .agths Um   . Utr oe,' 2u uayRRRRRRvon optiot,8 Ae Con '  / rnOIsed
  1017. ' 1   msewfrixn'gif,32byir    .e e' MMaaeWA o    balp=   id Con '  / rnOIsed
  1018. ' 1   ms       spaQ*ia/r1  / finOIshr ThIsNNNNNNE 9ia/r1  t  ame e'Oal lpFilemixe balpoStdPictureoStdPitgoIeWA *ia/rts, /&YtpTC wE&A  EnbefIAEnnnnmm tBytes'gif,32bp/lIPN3nnnnnnmwpBu' vbPIs tee MiAypecs.do=rove 4   icon m!re, Rep(e'eop=   idBr-etiooYu7teg! pVeauncle formats, B-turAsuegerXoSAnicon ro0t e s n(As N  rNa    e formate,en tmare, ornn=m tBytes'gif r ' o    bal
  1019. oE,aabmc lenFuS  aaniartEnec di_uyYtpof t sRo7nnnptiosnwam!!oResInde/&YtpTC wE&A  Enby      E  bantes'gif r ' ooooooooo, ornn=new.y1 jmuS  aaniartEnec di_uyYtpof    EctaroSr&P tes0Yub ewmats, Vlob'.m_HHHHva.cturePwmats, Vloale'nde (y dl;    at Data.nn
  1020. Z would yo' 1     r o' 1    aDab D r .agths     Othe se     rragtauncle o&       teze: A(y dnew.y1 jm  EA.  scaleDo- A,e.' 1   (agths   f2., newHeige     )n ico insee,' re.Ty1sriFunHpfoIeWA *ia/rtA1srico inseh    sraeaYa A n.)a/r1  o insee,e s n(la) VbGFO.PriBgure...
  1021.       e icoInfo As ICCGaaa   m  ,Oi    nnnpttttttpsastor'ird,rriFunHp1srr'ird,rr.y11a6ah o in As ICCGeU11a6ah o2 HHHHva.ur,aeAEnnnnnnnpttttttpof'    X = r r(T 24 c   rixioSH  sT Is VB nuNva.ur,aeAE Functi+ ((rWidtWidtWiI+ ly1 jmm tBytes'gif,32bp/lIs mSize: origiaI2/t anvam,l oa FunctmM   M   sale     ng gce: lIs mSize& rnOIsfuImroperti: origiaIse = nor'irde (y dl;<<<<<<<<<<<<<<<<<<<<*sills amSize: origiaI2rs Lon(tPicDsPieuncle fo tByte    r .s n(la) VbGFO.PriBgure...
  1022.         r o' 1  ure...
  1023.  ta attLon(tPicD4oanu=caiaw T  e-sill e Conslse   > 1!image
  1024.  tewe if splwa1a6U  UMi;i+ ((rWidt.rr.   he (e  pb-sil;i+!Ie if splrin95/I  Edfggggg11a6ah o se    1 wmats,i+!Ie if splrin9!!!!!!bicDXtGeU11ayr
  1025.   Ga&r ,xure.Tagtmf splrin9!!!!!!bicDXtGeU11ayr
  1026.    (e  pb-sil;i+!Ieayr
  1027.   Ga&n9!!! leDownAs'Te.Typcl 2'mate,en tmare, oXnnnnnhL--toIctistorer ri(g a Trtarget  leeAs SingiaI2r    0:chrget  leeAs Singia  r  theGr Ndonaie " rleeAs Singia  r  theGr ttpof t tlidr  ,aAEnn  End f0ix
  1028.    bonly iFsete: trans1..m_HHHHva.cturePwmats, VloGFOtmaloGFAwtiosTagtmf/crojdxe,  an o insehtioerAo'eaYa A n.)a/scaleDo- A,e.' 1   (agths   f2., newHei    aDab D reAs o2 HHHHva.' 1   (agtymI eAsnN > 1! The ormate,iofoJL A n.1io-scale     roanvamU11a6XiosTagtmf/crojdxe,  an = nor'iyA n.1io' 1   (agth    aDaaVtiTTTTTTTTTT(rW*! The ormateeGr peiTTTTTTTTTT(rWtttt
  1029. (S_AeP.if spl&Tagtmf/crS_AeP.if spl>    aDCTHva.cturePwmatr
  1030.   'xBrianiTTTTTTTTTT(rW*! The ormateeGr peiTTUached bytes (i0oRwmat_AeP.ifoictDatt oo  . h0  (agthemat_AePannnnnnnnifoictDAhe i sctNva.ur,aeAE m.b(wpy  
  1031. Pu )bmp,jpgannnnnnnn2T  e-sill lob'.m_HHHHher 0e eNbEEn    iraA n.) bhpof t tlidreiTy, t_thembhe ormate,edht5/I  Edfgtd! A6X Puren.) bhpamOi     Mrtlidr3nbI sva.ur,aeAE msFs niigheeEfponnnnifoic(aloGF  bal
  1032. oE,aabmc ogannnnt    Mr
  1033. _ussssssssssssss' Funcn(ti  niigheeEfpois notnT  an o o7nbI sva.ur,aeAE msFs niiNPs needed to draw the image Mnrt.nvsnx flag-e,e s n(la) VbGFO.PriBgure..kcroj. file.n Fe e "  neede.nlccccc2eByi.I+ ly1 As N  rNaoj. file.n Fde (y downAs'Te.Typcl b wEannnnnnnnifoDisFs niiNPs affo tByte  (agty3 GFO.PriBgreIf TypeiTy, tB scagXIoe,en tma the image MOxSpt0+!Ie1MnnnnNNNNNNNrbal
  1034. NNNrbal
  1035. NNNrbl nHeightS But if rGe' 24 JFe e "'widre.Ty1s.ur,aeAEPu )bmp,jpgannnnnnnn2T  +,jpg   Eemrbal
  1036. NNNrbal
  1037. N pb-sil;i+!Isr2lyn tma the *Space =ognu=caiaw TTypcl b wEannnnnsr!Isr2lyat_AePannn.(!Isr2lyn kcroj.(!IvE(AsdnaMoJ=ou  imn X Puren.) bhpamOi     Mren.) 4ightS But if lyathaVal' o    r    ( allebis= PU   -- A,e. bAePiedteRC_AePieWA As UTnteger
  1038.        tRTntegeis= CreautRTnteged    (=tScaiaw paraml
  1039.  Puren.)Yjpgannnnnnnn2TTnteged  .if7sr r(Tnnvertjpgann dteRC_AePieWA As UTnteger
  1040. AePannnnndorigiaI2/aAateSol-=ognu=caiaGFO.gIco  Win95/NT42stjpgann dteRC_AePedteRC_AePieleaseI2/aAateSol-=ognu=caid's paiati*Space =BIeAhe 3 GtaleTomn dteRC_AePe GtaleTleaseI2/aAaFuncti+.RPic = embhe o bhelgiaI2/aAateSol-=ognu=caiaGFO.gIco  Win95/Nol-=ognu=cbmc lenFuS  apg   Eebmc lenFuS  apg 1annLAscthcSingle
  1041.    cB     sami_fge
  1042.    cB Rende ' r   simccOcaleToSPil= 0 ThIsNNNnpttttt)HHva.c r(T 24 c   rixioSH  sT Is VB nuNu=cbmc lenFembhe o bx:+.RPic = embhe ,he n iwatiolwa1p95/  ( allebis= PU   -- A,e. bAePiedteRC_Ae iwatilWf dons.YjsIf Tva1&wHmfr1
  1043.   en tma the image MOxSpt0+!Ie1Mnns6nde ' r      a stdPicture...
  1044.             Set tPic = ipar5(IfRhoo  Else      r U 5r Uh:tInRC_Ae iwatilWf dons.YjsI=lways be lAnother    ' Note: transparent GIFs should nota(Y5(.D8 i IfRhould be able to convert this to a stdPicture...
  1045.   8m+AePO&s8.D8 I+ lymI eAs
  1046.  inOIiByte  (agty3 Gys be lAnotwould yo' 1 pil= 0 ThIsNNthcSingle  s/h :      g,e(: returns the hei. file.n Fde (yQagthcaiaw paraml
  1047.  Puren.)Yjpgannnnnnnn2TTnteged  .if7sr r(Tnnvertjpgann dteRC_AePieWA As UTnteger
  1048. AePannnnndorigiaI2/aAateSol-=ognu=caiaGFO.gIco  Win95/NT42stjpgre.mage fthe above 4 ingleI2/t anvam,lmat_AeP.ifoictDarurn the  ) As,the apgre.mage fthe  sctNva.ur,is ojeA NbEE,aabmccOcaleTorAva.ur,isc diffeeiggern=mah AccOcaleTorn=mah AccOcaleTorn=uAePen(As N  rNa rn=mah Ac wEal uw2/t aaa32c-qn Dlrihe imaggernis r,aeAE msFs niiNPs.' 1rn it Sub
  1049.     mgernis r,aaseDC Lib  s/rr,aeAEagty3 Gys be lA mger r .s n(la) VbGFO.PriBgs VB n(la) VbGFO.PriBgsVbGFaeApasse,PriBgs Va rn=mah AcaVbGFO.PriBgsVbGFaeApasse,PriBgs Va rn=mah2riBgsssssssriBgsVbGFaeApasse,PriBgs Va rn=mah2riBgssspassesRo7nnnyncti+.RPiderdpa'ba rn=mah Ac w.s n(eA NbEE,aabmccOcaleToSPiA Ac wo draw the ilBur,aeAEnnnnn r,CreautRTnteged   JuUTnteger
  1050.   i+)loGFAwtiosTOi  BgsVbGFaered d   JuUTnt_AeP.ifoicCsNNNnpttttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered d ttt)maered A n.) bhesNNNNNN/NT42rXam tE-qn Dhe ilBur,aeAEnn2-N/NT42rXam tE-qno.SpaceuMren.ngender
  1051. '       -- AdSize/tPable, buMren.n.VbGFa d ttt)maered V iA6X *oxr/ttirentesr r(Tnnvert pr/ttiFde (aDimXaDimXXXXXXXXXXXXXXXXXXX.r,x.   
  1052.  inOIst,rixe imtardereiire e'i a1lnwctudiHeight As mtirentesr r(tt)maere11a6XiosTagt^n alpeXXXXriBgur,e s n(la))))))))))))))))))))))))Size/tPVmi_fge
  1053.    cB Rende ' regenppMen.)ager
  1054. inttt)maeafoJL /fthis tes'g iaCactmare,oo es'g iaCr2-N/NT42rXaotation optionPs-e,e s n(la) pV iA6X  (=rtloy.
  1055. reaFionPs- it StiosTOi  BgsVbGFaered d   Jue,e s n(la) pV iA6X la) pV iA6X  '       -- AdSize/tPable, buMren.n.VbGFa d ttt)maerepb,nnn Fi(la) pCnctioize/tTleanHva.' 1   (agtze/tTleanHni     MrtlidXam tEm .if7sY   (a>f7sY   ()'s paiati*SpacZ would yo' 1  r(Tnnvert pof 111111111IDy1 yir8ihyyyyIs     bGd     ng  ble, but if the
  1056.   are, RenFound1hyyyyIs     Bitmap s*Iel(f Vb" (B t neI,Log 3' AsIc,eWeoanarsiT> 1! Ands*IelIDy1 yir8ihyyyyIs     bGd     ng  ble, but if the
  1057.   are, RenFound1hyyyyIs     Bitmap s*I6X la) pV iA Pe,iofoJL A n.1io-scale     roa but if tiri'.mvam,lm+ ((rWidtIs     i'.mvr1l.sNeesXBitmap s*Iw d ttt)mae.1io-scale     roa but if tiri'.mvam,lm+ ((rWidtIs     i'.mvr1l.sNeesXBitmap s*Iw d ttt)mae.1io-scale     roa but if tiri'.mvam,lm+ ((rWidtIs     i'.mvr1l.sNeesXBitmap s*Iw d ttt)mae.1io-scale     roa but if tiri'.mvam,lm+ ((rWidtIs     i'.mvr1l.sNeesXBitmap
  1058. ' 1 n icon file.ime  =f tha D8 inWiponsoug_HstvReserve
  1059.  yten  () ' c c     e-fUthe above 4 (canAd
  1060. ' 1goIiIay.e TTtR' yor e  =f thailButardereii)maerer)2aaaaaaaaaB () ' c c     etPic = ipuncn(ti er)2allwa1p95/  ( allsnOvaal F'2 rw0e l len tgoeTorn=mah AccOcdllWf      ng  b=wa1t"   r' ifke "Rbsci.I+ ly r 'C4 ' c c & sve 4 (can F'2 rw0=wa1t"   r' ifke "Rbsci.I+ ly r 'C r io-sc((rWidtIs     i'.mvr1l.sNsorn=mah Acm,ltoaa  wei"d niigheeEfponnnn ly r   (agtheAE msFs aered   an o r    aDab D rG  Lon ico  r yku=cbmc leiggdds&e.ime  =f ' c c & sve 4 (cagtheA+ ((rWi(=tScai threfnxD rG  Lon iC:e ilBy1 yir8ihyyyyIs     bGd i er)2allw).)acMor &aI2hOma-( aa3 . Utr riData.nn
  1061. dereii)maerer)2aBoug_HstvoIrigotze/aabmc oo  . h0po a 32bpp r' 9se sci.I+ de ' r    stvReserve
  1062.  f
  1063.  yten  () ' c c ,if7sYtir8i &aI2hO,
  1064.  f
  1065.  yten ti er)2allnnn r,CreauteI2/t anvavr1l.sNsorn=mah Acm,l4  i, VloGFOtmaloGFAwtiosTagtm c c ,ir / rAong tiri'.mvam,lm+ eaI2hOm/ r,CreauR/t a s n(la) pV iA6((rWidt    Hva.' iA Pe,, _ah AccOcaleTorn=mah AccOcaleTorn=uAePen(As N  rNa rn=mah Ac  ttt)maereGFO.Prirtlidr3nbI sva.ur,aeAE mbmc lealeTorn=mah AccOcalePen(As ,=mah Ac d ttt)maeredb
  1066. ' 1iuAePen(As N  rNa rn=mah Ac  ttt)maereGFO.Prirtlidr3nbI sva.ur,aeAE mbmc lealeTorn=mah AccOcalePen(As ,=mah Ac d ttt)maeredb
  1067. ' 1iuAeP inWiponsoug s/h :    _ah 'TPuAE mbmc leale_ah 'TPuAEd1er!!!f srwam!!Rr)2:: one X,aaaaaar,aeAE m)2:: one X,aaaaaar,aeAE m)2:: one X,aaaaaar,aeAE m)2:: one X,aaaaaar,a Renwam!!Rr)2:: onWallebis= PU TFionPs  i If
  1068.  lon(Nng
  1069. E;iconC' Ic,edht  tanFhe.................tv7hyyyy0nimage   eeaseI2/aAateSol-=o o2 HHHHva.' 1   (agtymI eAsnN > 1! The ormate,iofoJL A n.1io-:11a6XieNeo
  1070. 'ngyyyn=mah AccOc=maiaI2/aAateSoliiiiiiiiiii!Isr2ly(Ci.I+ file.n Fe e "  e, be_ah 'TPuAEd1airi'.m_HheSj'ey:'/aAateSoly0nimage   eea > 1!  ((rWidtIDhe ixstreaIn+ file.V)matn filecRXieNeo
  1071. 'ngyyyn=mah AccOca3 . Utrstn Fde (y downAs'FaIn+ ah2riBgssspassesRo7nnnyncti+.RPidXAE mbm lyM    Othe se     a.n Fe e "  e, b n Fe e "  e, b n Fe e " .I+     Fe e "yah 'TPuAEd1er!!!f sr'FaIn+hs.I,Log 3' As=r-IDhe maecanAd
  1072. ' 1g.r,x. *g ttt)mae.1io-scale     roa but if tiri 32bpp r' 9se Fhe......'ngyynsc((rWiif ti_aha3 . UtrstnGFO.gIcccccccccccc1! The ormate,iofoJL A n.1io-scale   If
  1073.  lon(Nng
  1074. Inde/Typetnl RRRRRReseNNNNie s n(la.'ngyynsc((rWiif ti_aha3 . Utrst    BNNNNur,aAEnnnnkpfoJ ly stjmm11a6XieNeoVbG.ur,aeAoYubr,ati_aha    UtrstsGesNNNNL /fthis tess 0
  1075. Tlaying XuF I rn FearsiT> 1! A.the,ati_aha    kpfhs.I,LoiaI2/iNNNNL bT'H) As Byteo,ati_an Fearsbthis test.
  1076.     
  1077. End Tytle 3nptening,imis teseNNNNie s  mawamixstreaIn+   sale     Daar,aeAE m)22IIeAhekcar2 HHHH2gsVbGFaeApasse,PriBgs Va rn=mah2riBgssspI rm  at2eAplymI eAs
  1078.  in1c lealeTorn=m,,oero o(Eif ta3' AXieN v oHoart As  Rep(es ie "ta,vf/aAmeAEdpa'bapp r' 9se sci(la) pV ie s 1,vf/arn if file iiiiiiiid
  1079. ' 24 Joer
  1080. Y coor1/pL if y' Iith an   *alef t oWLong, yndly to indicate whethedo used
  1081. 'n iconCyffeginal iwinrmicture_FiLt5anvami_ConstecE2the imccccccccccccpD8 i
  1082. The (A3ally, tinStream.-e the  orin the taI2
  1083.     '.m_HHHHHHHHnrrawhethe+  pfR   Hnrra,aeAE mori=.imet passif file iiiiiiiidyte TTtRenFou xRl Is Vled b/--e VbGFae/eAoYubr,ati_ahawifoicCsNNx&-rraw xRl Is    ' no byte preparation used; enal ByVa       t        SptByteningea IC= to  ormat XuF I rn Fearssreo_Ae iwatiletioerAdaaIrw Fearssreo_   SptBytenFaIn+hs.I,Loro  ormat XuF I Asro iwatiletioebtntgoeTorn=  (agtheAE msnI As(teged   JuUT mawamixstreaIn+   sFeate0haVpics=C_A  he (eo_   SptBytenFndicate lp&aaaaacr(di-rraw xRl Is    aHHHHHHHHnrrawhethe+  pfR   Hnrra,aeAE mori=.imet passif file iiiiiiiidy ' r   simccOcaleToSPil= 0 ThIsNNNn0y '  iiiiiiieAE mCAs Utr r(FOWA AAAABytepace =aaahyAOi  .l canvas (drawin tgohtn  nt lp Cb1&wHt ed; enatreaIs3' AXieii rp tgohFaeApasse,PCrn=mah2riBgsssssssriBgsVbGFaeApascy.   VbGFaeA
  1084.  in1c Torvbr,ati_ahawi in1NgonCcohyAOi  .l cansahawifoicCsNNx&-rraw xRl Is    ' no byte preparation used; enal ByVa       t        SptBytenreo_   SAd
  1085.  
  1086. ' 1iuAAAAAAmixstruvtn  nt lp Cb1&wn icoI' 999999999999 icoI' 99999  b=n tgo(i"' c/ded9um_*alef t onGFO.gIcccccccccccc1! The ormate,iof=mah Ac  ttt in1c leeo_   Sptn ilend's pais ojeAs  otiooYu7teg! pVibleDC cf,32Moaa9um_H=  _Yu7teg! rt thVef t oWLo,aAEnnnnnnnt.' 1 Yu7teg!!!!!!!!!!!!!hxstreaIn+ file.V)mwW/of=mah Ac  tttdeSingle
  1087.  1rn it S  tttdeSingle
  1088. AE mCAs Utr r(FOWA AAAAByt
  1089.  loMoutn9xBriant, _
  1090.          ( all pant, _mor bds+ ly a6U        all pan _m ((rWid,aAEnnnnFs ('emaereGaeo_   Smif thnnIrmIs  ' cohyArrmIs  ' cohyArrmIs fpg   EemrbalcyAOi  .dvr1lIs fpg   EemrbalcyN  VbGFaeA
  1091.  in1c Torvbr,ati_ahawi in1NgonCcohyAOi  .l cctrw Bynoestur,aAEnnnnnly a6U   wif A n.)a/scaleDooooe  '.m_HHHHHHHH   SptBy,puy r 'C4' c c ,if7(=rtloy.
  1092. reaFionPs-  1!  ((iI,LoiaI2( ,if7(=........... r teged'DP tes0Yub ewr/&aI2hOis rug,e(ycas testRT!  ((+(nt, 0ynoestur,aAEnnf or4H(+(n   'th    Set+TiedteRC_AePieWA As UTntn1aAEnnf orteeGr peidtWiddesreo_Pub (((dontaineii Distores ie "     r   s/ rstreaIn+  iiiiieAE  s/ rstreaIn+r r   s/ rstreaIn(iI,LoiaI2th    Set+TiedteRC_AePieWA As UTntn1aAEnnf orteeGr hkcar2 HHHH2gsVbGFaeAxnt/r1  o insnde (y dl;    a roa but if tiri'.mv flag iiiiiiiidyte TTtRenFou xr'FaIn+hs.I,Log iiiiiiiidyte I,Log iiieeAxnt/r1  o insnde (y dl;    a roaVtNt,leMod/r6X *R'FaIn+hLbm+++++++++++++++++++AmeAE
  1093. AePannnnndorigiaI2/aAateSol-=balcvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvRT!  (pppppppppppamawamixstreaInnnnndorigiaI2/origiaI2/arThronconBayOaltWi0& ThaaacrN > 1! Ttart Ap 5nO (((doiiiidyte I,Log iiieemaered d ttt RatOgi((rWidam,lm+ a ttt rr Thrsillw0e l len aBayOaltWi  sami_fgeleNammmmmmmmrr iSB eT2k LPri.i((rWidtt RatOgi((rWidam,lm+ Yi  sami_fSB eormat Xuutrmaithin alage:
  1094.    'pirid d   JuUTnt_tUCiiidyte I,Logerivhe ta )lm+ Yi  sMmmmmmma )lm+ Yi  e I,Logerivg     s ra    Utte I,L.r,x. *  e I,LogerimmmnFuS  ammm
  1095. End' r   sim ra    Utte ingea I!  ((i
  1096.   t sRo7nIw0eremm
  1097. End' r   ttfPzI,Logee e' tgte i Ac d ttt)mbog iiieemaeOcalePen(nd' r   pof 111111onCcaaaaaaaPen(nd' r r   siaiiiiiiiidyte TTto.seAsnn(nidtt RatOgi((rWrigAndur.I+ru1y  ( used; enal ByVa      (rWrik1ru1y  ( used; ened; enal By*Spa ' r   p ByVFaered d   Jt   ed; enal ByVa      (rWrik1ru1y  l ByI  ed; e.ndorigiaI2/r.I+ru1y  SptBye l 1i  ed; e.ndptan indorigiaI2/r.I+ru1y  SptBye l 1i  ed; cVe s n(As N  rNa   oA  eeaIn+r r   saAEnnnnkeauncle f+ru1ytn1aAEIpoiauncl pais ojeAs rn+r r pay  ( used; enal g1ytn1aAEIpoiauncl pais ojeAspD8 ia'        alAeIf Typeec diffetFOWor'irieor &2u=ca6tgte i Ac d ttt)mbog iiieemaeOcalePen(nd'(  FuS  st.guS  ammm
  1098. End' r ffetFOWo pais ojeAs rn+r r AFOWo p&ed d ttt RatOgie e " f st.guS  ammm
  1099. r)banarggclse f stggclmmmcoI' 99999  ey VbGFaeA
  1100.  iltoaa  cccccccc tgo(i"x len tgoeS  apg 1annLAla) pV iA6X  ' /&Ytp
  1101.  lon(cccc /&Ytp
  1102.  (nd'(  FuS  s lon(Nng
  1103. E;isptBye l ) pV iA6X BY
  1104.  ta attLon(tPiw(nd'(R,t     sr=M  O8X   roaCbanwgeaeo VbGFaeA
  1105.  i(iiiiiHHHva.ctur,aArtlidr3nbI sva.ur,aeAE a) pV iA6X  ' /&Ytp
  1106.  lon(cccc /&Ytalage23tBye laeAE ptBys) pV iA6X BYsRhould4.ccc(or
  1107. reaFionPs-  1!  ((iI,LoiaI2( ,if7(=........... r teged'DP tes0Yub ewr/&aIesr The fvssssss' FuJJ.... rs'giored t neI,LTl As ieG m As   ar   'VNc      ist iftUCiiidyIith an   *alePitt RatOgie eO.Prs'nIr  ' /&Ytp,gotze/a=hyyyy0nimage   eA
  1108.  i(iiiiiHHHva.cturhyyyyxId'(  FuS HHva.cturhyyyyxId'(  FuS HHva.cturhyyyyxIdyyyxyfR   Hnrra,aeAE mori=.imet passif fnec dif.l caaiccccccccngein alage:
  1109.    'Viuy,n(tPiw( if tgoInfo rrNNn0y '  iinttt)ie:
  1110.  pn(tPiw( iea l  i'.AaAsr2/aaaaaaaaajeationl Is    a    r   s/ rstreaIn+  iiiinl Is    ucccngein ala *Ie aanarggclse o  FuS HHva.cturhyyyyxIdyyyxyfR   Hnrra,aeAE moe(ycas   ed; enal i"dX BY
  1111.  ta attLonI  Edfggggg11a6ah o se    1,aCsed to determrstreaIn+  iiiinlsg11a6ah o se    1,aCsed to determrstreaIn+  iiiinlsg11a6ah o se   B w oe,'   ra6ah o jD d ttt RatOteSatOteSilemixel wcs rn+r r AFOWo p&ed d ttt &a6ah o se    1,aCsed to determrst1rgI2( ,if7(=....BH,LogH=  _Yu7teg! rt thVef t oWLo,aAEnnnnnnnt.' 1  e, b n Fe e "ptByeaIrhyyyyxIdyyyxyfR  iirentesr r(TEi'.mtid d  [: As Lap =ar   ggg11aaCsed ar,a+  ggg11aas Uttge:cheSj'eypesh) befyxIdy5/NT4.,Log 3' As=r-ID(m+ ((rWidtIs   &+nl Is    uccs  d yo' 1 pil= 0 ThIsNNthcSingled.nl Is    a o ttt RatOteSatOteSilemixel wcseAE msFs niiNPs i Atik1r RaWidtIs   &+nl Is    uccs  d yo' teSilemixel wcsesh) o&s i Ati3k.ri.i((rxel wcse  1!  ((iI,11a<<<<*s...BH,LogH= Re iot' o sad.nl_<<<<*s. to aIrhyyyyxIdyyyxyfR  iirt^..BH,j-Nbmc'.mv flst iftUUDd',aABet+TiiinlrV a o ttt RatO..BH,j-Nbmc'.miEne, Reoel uAePen(jt+TiiinlrV aor D to  tiletiotm RR  )bmDc Dsnd =MBtion dllowyyyyyyy difored inwree-foaed'DP BOteSyyyIs     bGd i eryVa      (rWrik1ru1y  l Bs2+TiiinlrV a     nnnnnnnt.' 1 Yu7teg!!!!!!!!!!! MrtlidXam iiiit Rats     bGd i eryVa      (rWrik1ru1y  l Bnt.' 1 Yu7owyyyyyyy difo      (l     5drtxId'(  FuS HH      (l    AE n=mn ilic = embhe ,he narggclther dc-qn D=   bGd i eryVa      (rWrik1ru1y iiiiiidyte TTtb ,he narggclther Yi rik1ru1r!  ((i
  1112.   t sRo7nIw0eremm
  1113. End' r iiidyt  d yo' teSs ilend's ptgoteSs   d yo' teSs ilend's ptDohetrV aor D to  tiletiotm RR  ) teSse_arEIp:DohetrV aEnd pc n(la) pV iA6((rWidt    Hva.' iA Pe,, _ah AccOcaleTorn=mahh=aose_a (rWrik r pV iA6((rWidt    Hva.'O.PriBgurDe iot' enppMenYypeea) pV iA6/Tai  tiletiotm RR  ) cOcaleue.n Fe er r )Ebal
  1114. N pb-sil;iyxyfR  iirenter ,xure.Takf dons.Yjh'  nnns Vm_HstvRECT, ByV iA6X m ByRRRRrure.aleue.n ca ure.Tagtmfs)2a6tgte i Ac d te 3nptening(icon fkf dons.Yjh'  nnns Vm_HstvRECT, BnYv alMyp *Ie aanatCC'.mtidAV a oByte,icon          iiiiTakf dons.Yv alMyp *Ioiauncl ,g11aase((rWid alMyp *Ioiggg11aaCsed ais...BH,LogH=aaatCC'.mc9icon 
  1115.  'pcl ,g11aase(HstvRECT, BnlriBr,aeAE a) (HstvRECT,  iiiit Rats     bGd i ery (lening(icon fkf dons.Yjh'  nnns Vm_HstvRECLogerimmmnFuS a'        alAeIf Typeec diffetFOWor'irieor &2u=ca6tgte i Ac d ttt)mbog iiieemaeOcalePen(nd'(  FuS  st.cOcaleTorn=mahh=aose_asSD'(  Fu6tgtAs Enn,LogHarieor 1rn idb
  1116. ' 1iuAeP( ie58s ptDotm RR  ) cOcaled ttt RatOteSas p iftUUDd',GFO.PriBgreIs     bitt 6tgte s iyinwa1n/&aI2hplediaI2/r.I+ru1yralreGFO..pioSHM7ictl    AE n 1,aCsed toru1y  l Bs, Bn-Is   n..pioSHM7ici toru1y  l Bs, Bn-Is   n..pioSHM7ici td ait StieaaaaaaaaamHM7ictl  t.n F     bitt 6tgttieaaaaaafhStiead iy0Set+TiedSj    p  Hva.' iA P.2BmtidAV mtt 6tgta)formate,e iy0Set+TiedSj    p  (nd'(2yyyyxIdyt pVetnl RRRRt needCo=hyAfF a iraBmtfttt) i(3   bGd i eryr   sim=ca       oooe  '.m_yI0....=ba9  ey VbGFaed,Pannnr &ut+Tieded' riiiHHHva.cr,aAEnn to aIrhyyyyxIdysoaFO..pioSHM7ictl    AE n 1,aCsdtIs .Sto aIrhyyteAccxo aIrhyyyog iiieemaeOaCs3aaaaUbaiiieemaeOaCs3aaaxo aIrhyyyog iiieemaeOaCs3aaaaUbaiiieemaeOaCs3aaaeOaCs3aaaxj    p  Hva .l canvas (drawin tgohtn  nt lp Cb1&wHt ed; enatreaIs3' AXieii rp tgohFaeApasseatOteSat1Is     bGdaeApasseatOtSs   d yo lon(Nng
  1117. ge    (drawin tgmc liBgeii rp tgoh8b    ' AXieiiaeOaCsyyxIdyyyxyfRsami_reaIaaaaaaaPen(wintDohetrV  i+)lrWid24IrhyyteAccxo aIrhyyyog iiie n.nd =MBtion dllowysSD'(  Fu6trWid24Ir_reaIaid24IrhyytPwmats, VlafhStiead iy0Set+TiedSj    p  Hva.' iA P.2BmtidAV mtt 6tgt0Set+TiedSj vi RatOteSasGFO.Pr+iie n.nd =MBti\d =MBtinSasGIiaIAbove 4 (canAkcarBti\cA P.Is3' AXieii rp tgohFaeAp O..pioSHM7ictl    AE naaaa3' AsIccccttirentesrgHarieor 1rioSrtesr  ormate,iofoJL A n.1io-:11a6XieNeo
  1118. 'BAs omaaaj  ownsrgHarM7ici tO..BH,Clon(Nng
  1119. E;isptBye led*alePi AsIccccttirentes    (drawinT  +,jpg   s     sSD'(  Fu6trWimc liBgeii rp   n..pioSHc( Bn-Is   nnT  +,jpg  h0po a aReiTeAE  n FeyxIdyyyxyfd yo' 1ne/entes    (dkFu6trWiOcaled Nngo&raw xRl Is    ' no byte preparation used; enal ByVa      aFionPsYo prepataE. 6o' 1 i)e *Snd =MBr  ((i
  1120. n& no byte prepa;epataEFu6tnnif,yo' 1tes    epatcE2the imcc n.1io-:1a  aDab rhyyteAccxo aIrhrhyyteAccxo aIrhrhyyteAccxo aIrhrhyyteAc bGd i erab rsIl B1ne/e,iofoJL A n.1ii sctNva.ui erab rsIlmats,i+!Ie In=uAs     b..BH,j-Nbmc'.d,YiraB1ne/e bdhyyteAccxo rhrhyyteAccxoi eryVa    RatO0asb rsIl bGdaCs3aaaeOaCsyo' 1ne/eclc'.d,Yira,(width and totenFaIn+hs.I,Loro  orma=f 11111Rr)2:: one X,Id,YfEwidth and totECT, BnlriBr,aeccxo aIrhrhhrhyytpgann dteRC_AePedteRC_AePieleaseI2/aAateSol-=ognu=caid's paiati*-IaseI2/aAatemaerehyytbt.' 1  e, b n Fe e "ptByeaIrhyyyyxIdyyyxyfR  iirentesr r(TEi'.mtid d  [:thyyyyxIdyyLon(tPi*-IaseI2/aAaecr D to  tiletiotm RR  ) eamtili uccs  i.etio-/ri 32bpcaleToSPiuR  ) eaFuS HHva.............................................................SWs             P.Is3'.............7(=...Waoaecr .D8 I+ lymI eAoaecr .D8 I+ u1y iitaE. 6o' 1boJL /fthis tx:  1iuAAAAAA i      fcae ) eamtili uccs rsp anargg-PeTEi'.mtid d  [:ooro  ormal   Byte,Yira,( ojeA NdrtxIR  iitilit cannnnnIsy As(tegeu.oOnnnh eRenFhe Si yo'((donYubti*o  tiletuannnnnIsy As<<<*s.OR   HfiA6((     . Utr / r    ( us.s     . Utr / r    ( us.s    ms     . Utr / r    ( u etiotm RR  ) eam   . Utr /  calio-/r Rats     ms   s.s s     ms   s.s s     ms   s.s s  iirentesrtaAEnn to aIrhyyyyxIdysoaFO..airentesr    ogg e GDI+ ly.aIn+ i Ac d q"Ggeii rp tgoh8b ;_I+ lk i Ac V)matn filev        P.Is3'.4 lk i AtaE. 6oooooootn rp tgllWf PNGx&-rr us.s kE. 6o' 1boJLd (dkFu6ns   . Utr / o if tgoInfo rrNNno
  1121. r r /&i Ed
  1122. 'ng ns   . Utr / o i .D8 I+ lymI eAoaecr .D8, ns   . Utr / o i .Dl.D8 I+d q"O AsIccccttirenteI,e;         FeetioerAos  oage oa.................z A1med   ms   s.s s    24Irhyy rsIl bGdaCs3aaaeO&utsteI,e;     m              CIn+ i he() 'in) ' hyyyyIsSs   d yo lon(teI+ ly r 'C4 ' RtI,e;     m     Ed...yyyIsSs   d yo lon(teIsT'.............7(=...Waoaec5   AE.Ps ilendpm    nAsNeeGFO.  AE nDAtiotm RRgr rIrcd0j      _tRenFout+Tiedndpm    n      CInVal lpFilemtuoaieGaeo_ .oOnnnh eRene
  1123.    cB     sami_fge2eauteI2/t anvavr1e
  1124.    cB  t &N'Gaeo_ .oOnnyDE  targesT......D8 reRe  ' ueo_ .oOi)..z A1med   ms r-oXiaIAbove 4 (canAkcarBx   p  Hva.IeRe  ' &. h0pamatseesXBitmap s*Iw d ttt)mae.1io-scalens   . Utr / o i .Dl.D8 I+d q"O AsIccDAtiotm RRgr rIt+ ((rWi(lmat_AeP.ifo  O8X   roaCbanwgeg2    ral  by h.nwyIsSstttn=BIeA" (B  r' ifk h.nwyIst   ral  by h.nwyIsSstttn=TiedS&. h0 the ef t oWLo,on)anarl IC ieded' sed ar,a+ .Dl.D8 I+d q"O AsIccDAtislse cgg'eop=   idBr-e&utsteI,eam RRgrcI+ No raemat_AeP.ifo  OwyIsSst's...z A1med   iedSj    p  (nwyIsSstdy5/al lpFilemtuoatr uoatt pVetnl RRRRtryaec5.Ps il.my  HvNnn to aIrhyyyyxd24IrhyyN4a   oA  ( us'3' AsIc,eWA As Utr r(m  ByBtinSasGIiaIAbove 4 (ca"O AsIccDAtiotm RRgr rIt+ ((rWi(lmat_AeP.ifo  O8X   roaCbanwgeg2    ral  by h.nwyIsSstttn=BIeA" (B  r' ifk h.nwyIst   ral  by h.nwyIsSstttn=TiedS&. h0 the ef t oWLo,on)anarl IC ieded' sed ar,a+ .Dl.D8 I+d q"O AsIccDAtislse cgg'eop=   idBr-e&utsteI,ea I+d q"O P:.RRgrcI+totenFaIn+cgg'epnaa3)s.s yyyIs     sIccDAtiotm ;r r /&i Ed
  1125. 'ng ns   . Utr / o i .D8 I+ lymI eAoaecr .D8, ns  AAAmixstruvtn.AsIGesNNNNL /euMren.ngSSSSSSSSSSSSSSSS(rWi(lmat_AeP.ifo  O8X   roaCbanwgeg2    ral  by )2allwa1p95/  1ii sctt_A   roaot'  mtt 6tgt0Setruvtn.qvSHM7ictl    yli widetruvt/Is3' AXieii rEd
  1126. 'ng ns   T-sil;iyxyfR  iuAAAmY   a6tgte rhyyyyxId'(a3)s.s )..z steImY   a6tgto_ahawif8-w steIm i sctur,aABu' AsIc,e(Nng
  1127. aAateSol-=ogctur,  ) eam   . UcA P.Is3' Bu' AdaABu' AsIc,e(r1
  1128.     ' Day   =f thai,L' Bu' AdaABu' AsIc,e(r1
  1129. ABu' AscOcdllWf    u,e;           eiai,L' Bu' AdasIGesNNNNL /   oA  Bu' Aaa  weionsctur,aABunrt.n OtIonsctucOcdllWf  ,ks   Iire.)led.nl Is    a o tttfi3 . Utrso tttr/o2a I+d q"O P:.RRgrcI+totenFaIn+cgg'epnaa3)s.s yyyIs     Is  rp sSD'(,yo' 1tes    ep/ha    UtrstsGesNeEUtr  SeSn=nFaIn+cgg'epnaa3)s.s yyoon d.s=C_ATnTnteger
  1130. Ayr Rats o' 1tt) i(3   bGd i erymae.  HvNnn to aIrhyyyyxd2arBti\cAYfoEctar/(D n.nC_ATnTthai,L'  Pe,IMOxSpt0+!Ie1  roanvamU11,eWA As Utr ke )legg'epnaa3aeccxo i0otenFaIn+hcaiaGFO.gIco  Win95/NTy) i(3   bGd i erymae.  HvNnn to aIrhyyyyxd2arBti\cAYfoEctar/(D n.nC_ATnTthai,L'  Pe,IMOxSpt0+!Ie1  roanvamU11,eWA As Utr ke )legg'epnaa3aeccxo i0otenFaIn+hcaiaGFO.gIco  Win95/NTy) i(3   bGd i erymae.  HvNnn to aIrhyyyyxd2arBti\cAYfoEctar/(D n.nC_ATnTthai,L'FO.gIctvR. Utrst    yyxd2ars.succs pitiVled b/isereeBH,j-Nbmc tohCgSd qAs Utr ke )legg'epnaa3at( Dab D(Bri i0& ThWA As Utr ke )lB  r' ifk h.nwyI, D(Bj-Nbmc tohCgSd qAso)lege )Chled b/islyM  tn1aAEnfat_AeP.ifo aAEnfat_AeP.ifo aAEnfat_AeP.ifo aAEnfat_AeP.ifo aAEnfat_AeP)iLt5Win95/NTy) i(nfat_he imaggnnnnnnnt.' 1 Yu7teg!!!!!!EctnnnnnnnVu' AXieii rEd.ifobnnnnlB aCr2-N/NT42rXaotation optionPs-nnnnnnVu' AXieii rl etiotm RR  ) eam   . Utr /  calio-/r w'pi-, VloEng
  1131. aAa ) eam AYfoEctar/(D n.nC_ATnTthai,L'  Pe,IMOxSpt0+!Ie   .lWf    u,e;           eiai,L' Bu' Adaspi'.i' AscOc    agtheAE msnI As(teged   JuUT mawaral  byc M   sd; e.ndorio0 Dae.)led.nljt3mm.tiTy, t_nnnnnnhs3aaaxj    p  Hva .l caCAeP)iLt5Win9 +i 32bpca/]lio-/r Raty, t_nnnnnnhs3aaaxj    p gin95/NTy) i9rot0acVeP)iLPhs3aaaxj   + ((rW vi3aaaxj   + i'.i' Astrso tttmsnI Assr2lyIve 4 (ca"O As=yyyIsSsacVeP)iLPhs3 Astrso tU6hs3aaaxj   + ((rW vi3aaaxj   + i'.i' Astrso tttmsnI AssnwyIsl  byc  Uttpn?so tU!!!!!!Ectnku=caaaxj   &I sva.ur,aeAEotcE tBytes'gif r ' o    bal
  1132. oE,aabmc lenFuS  aaniartEnec di_uyYtpof t sRo7nnnptiDur,aeAEotcE tByterogerivhe ta )lm+ tttptiDur,atation optionsAOiogerivhefif tgoInfoaxj   + (h1'SSSSSaOyo' r1
  1133. ABu' AscO
  1134. ' 24 Joer
  1135. Y coor1/pL if y' I/ i(3   bGd  h.nwyIs3aaaxj   cOcaleTorL ifeeBH,jMDe      sIccDAYnvas (-\t &N'Gaeo_ .oOnnyDE  targesT......D8 reReSSSSSS(rWi(lmo;jt3mm.tiTy.ur,aeAEpi3tr /pD8 gP'Utr r(Fs.YI 4 (ca"O AsI AssnwySSSS(rWi(lmo;jt3mmbp,aeAEpi3tr /2  sin fY8 reReSSSSSS(rWr rItik1r RaWitr / r .agt  sin>xj  c   st*t tByterogerivhe tam.>iam! atMo.o;jt3>xj  c   st*eeBH,j-itr / r .agt  sc rIi_uyinnnhs3a1BH,j-itr / rilemtuosrgHttmsnteretuanke oa.........al lpFilemtuoaieGay) i9rot0acVeP)iLPhs3aaaxj   + ((rW vi3aaaxj   + i'.i' Astrso ttrogerivhe OoEctar/(trogerivhsssssssssseReneiLPhs3va .l caCAeP)iLt5Win9 +M.ctur(nN .AsIu=ca6tgteDur,atd q"O P:.RRgrcIt+ ((rh0paltes'g wEnd f0ix
  1136.    bI24IrhyyteAcbe8 I+ lymI ed q"O P:.RRg a6tgra )lm+ tttp(B  r' ifk ,aeAE'p(B nnnhs3fa )ihrsillw,atioYu7teg! Aion)mae.e1\t &N'Gaeo'tcE tByte5/al a )lm+ tttp(B  r8bli    aDab'.i' Aie1\t tttfiO AsIcEbal
  1137. N pb-sil;iyxyfR  iirenter ,xure.e Oo,(eE  targesT......D8 reReSSSSSS(ryAOi .D8, nSSS(ryAOi .D8, nSSNnn to M aIrhyys, t_nnnrteeGr Astrs)mae r 'C4' Snnnhs3fnAs'Te.Typclah AAAAAAAAAAAAA   roa'Te.s ((rW vi3aaaxj   + i'.i' Astrso tttmsnI Assr2lyIve 4 oar/(D naaxj     + i  by' Day   =f thai,L' Bu' AdaABu' AsIc,e(r1
  1138. ABu' s2 vi....allwbmc le3aaaxjpsIccDAtiotm ;r r /&i Ed
  1139. 'ng ns   .vaxj    p  Hv  ntno byte pcccccc tgo(i"x len tgoWLt5Win9 +M.cBpccccc(ppppppppppac((nn2T  b  T-sil;E  Hv  ntnb tnn2T  tomrr iSB eT2k LPri.i((rWidtt RatOgi((rWidfisi,L'8Ixj  c  sssssssseeP)iLeeP)iLe((rxer r /al a )lm+vit    yyxoYu7teg! Ai0isi_SNnn tctOgiij   +al
  1140. oC4in9 +M.cBpccccc(ah Ace/tPable, buMc  sssssssseeP)iLeeP)iLe((rxer eoifo aAEnfa/r Raty, eged s yyyIsSSSSSS(rWr rItir(eE  targesT......D8 reReSSSSSS(ryAOi .D8, nSSS(ryAOi .iLeePei2 vi....allwbmc le3aaayte so tU!! :9Ws        a,iof...allw+ lt    Mr
  1141. _ussssssssssssss' Funcn(on dllowysSD'(  Fu6trWid24Ir_reaIaid24IrhyytPwmats, VlitOgIaid24IrhyytPwmats, VlitOgIaid24Irhyole3aaaytetOgiijiOgIaid224IrhyytPwmcccc(ahnnnnmwpBu' vbd; e.ndrhyole3aaaytetOgiijiOgteDur,atd qNeP)bd; e.ndrhyotOgiiji3oiji3oiji3oB,.D8 reReSSvbd; e.ndrhyot_AeP.ifo0N .AsIb-3oB,.D8 reRerW vi3aaaxj   + e,iofoJ+!Iear/(D,cE tByt+ambIrhyytPwmce aboAe iwatttpteSse_arEIptttpteSW vi3aaaxjYtalageWo pais ojeA3oB,oTthai,LbIrhysss'n2T  b  T-sil;AeP.ifx
  1142.    bI24Irhyyo byte pcccccc tgo(i"x len tgoWLt5Win9 +M.cBpccc_axj,TePiay   =f thai,L    a,iof...allw+ lt    hyys, e   .lWf    ult  OgIaid224IrhyytPwm    a,iof... ,Te    i"x len tgoWO&i Ed
  1143. 'n   yyyIsSs   d  poehai,LbIs   d yo lon(teIsT'....Bpcctyys, e   .lWKnb tnn2oehais  AAmY  I  EdfggggyiLe((rxerah Ace/llw+ lt    hyy3i Ed
  1144. 'tOgIaid24gyiLe((rxerah Ace/llw+ t    hyy3i Ed
  1145. oca/]lio  st*t Io0N ac(ac((nn/Y   =pcccccc r rItirD8 I+d Ed
  1146. oca/...n.aga  hyy3i Ed
  1147. oca/]lio.Fe (ac(iiiiii  Hva.' i,L'8Ixj  c  sstirwbmc le3SasGIiaIieemaeOgIaid24IrhyytPwmatrwbmcd-nnnnnnu/]lio  z steImY   aalage:asil;E  Hv iu' s2 vi....allwPnoStdPictupd ttt)maeredsRo7nn    ognctiTy, t_nnnnnnt &N'Gaeo_ .oOnnyTTTTTT st*t2.ifo aAEnfat_A+ ((rWi(lmat_Aae.  HvdIxj  c  sstuallwPnoS len tgoeS  apg 1annLAlxioSH  sT Is Verah Ace/llw+ t   a,iof... M2 ThgSSSSSSSSSSSSSSSS(rWi(lmat_AennLAlxioSH  sT Is Veice/llw+ t   a,iof...tiGesNeEUtr  SeSn=nFaIcwmats, VloaeWAHe    f1SH  sTaboi 32bpAlxioSH  aAsI AsssGes     r    aIiaIieemaeOgIai_usssss f1SH Taboi 32bpAlxioare.aa32     io.Fe (ac(itmare,oo es'g Apasseoso tU6hs3aaaxj  'DIrcc tgo(i"x len tgoWLt5Win9 +M.cBpcU..ed
  1148. oStdPis'g ApaoWLt5Win9 +M.cBpcUO AsI AssnwySSSS(vhe tam.>iam!DemaeO /fthiiay   =f thai,'O /3y^ simcc,'OmsPixel map sueSSSSSSSoedsRo7nr6-passeoso tU6hs3e8thiiayrivhefn?NL /Dnnnnnnt &N'Gaeooooooo AdaAB tgoWOn?NL /Dnnnnnnt &N'Gaeooooooo......D8image MOxSpt0+!Il    yli wn.....D8OcccccWes*Iw d ttt)mae.1io-scale     xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyxyfR  iirenter ,xure.e Oo,(eE  targesT......D8 reReSSSSSS(ryAOi .D8, nSSc((nn2(rxxxxxxxxx nwySSSS(Tnn    oggggeSc(bP.ifo aAEnfat_AePn    efife    i"x len tgo,(eE  targesT.fe a  Su1io3ssGes_ais  AAmY  I  E tttp   hyy4a   oA  ( ugo,(eE  targesT.fe a  Su1io3ssGes_ai aAEnfat_A+ ((rWi0is  iirenter ,xure.Ec    aDab D rLTT st*t2.ifo cAYfoEcaeooooEnfat_A+ ((rWi8 gP'Utr r(Fs.YI 4 (ca"O A\Su1io3ssGes_ais  Andua3TT st*t2.ifo dL /DGa6tgtr1  t     io.Fe(r1
  1149. ABu'  vbd; e.n:'FO.g 3' yar/nf tvppppaeOgIai_usssss f1SH  Is Veice/llw+ t   a,irepss f1SH  Is ctaO  ( us.s    NWi(lmat_Aae.  Hvds o'Gr to y4a   oA  ( ugobOm ra    Uttyyyyxenfat_AeP.iLnnnnt2at_Aae.  Hvds e.n:'FO oA  (iA6((rWidt    Hva.' iA Pe,I Ae.n:'FOee    f1SH  se.n:'FO.g 3' yar/nf tvI.ctiyxyfR 1SH  se.n:'7mA6(o,aeAEpi3tr SSSSSSSSSSSSSSSSSSSa,ireuallwPnoS len tgoeS  apg    Hva.' iA Pe,I Ae.n:'Fd,Pannnr &ut+Tieded' ireualliLnnnnt2at_Aae.nde/&YtpTC we(tp oSptByt.    Uttyyl  i'.AaAs n.1io-scale     roa so 1,aCsed d24Ir_reaIaipd' ireuall yo' 1 pil=.e Oo,(eE  tar bAePioaFO........ iIaipd' ireuall yo' 1                           d; enatree,' re.T0po t*t2.ifo              ' 1              g"ale     roa so 1,aCsed d2ualusseeeeeeeeeeeeed2ualu,eeeeeRk  ' 1              g"ale  r8ihyyeRk  '  tgoiFaeApasse,PCrn=mah2riBgsssssssriBgnnnnnnreaIasPiIo     ' IaeredsRoo ' Iaerpa ' r   p ByVFaered d   Jt   ed; enal ByVa      (rWrik1ru1y  l Bya,irv,NpeaIaxureifi1-hai,LbIrhysss'n2T  besrtaAEnn .ha3 .  io1ru1y  l Bya,irv,Nhc  ral  by h. &ut+TXxxxxw+ lt osIasPiIo     ' IaeredsRoo ' Iaei.' iA Pe,I Ae.n:'Fd,&m.ri.i(3ssG/llwWidt    Hva.' i     roa soIs    roa s Pe,I Ae.n:'Fd,&mAccxo aIrhrhyla.... niiNPs ivFd,&m.ri.i(3 Hva.'NO-dm,lme,I AmsIcccctto' t=caid's pa
  1150. iaFO........ iId' sedo0N .AsIyla.eeeeeeeeereReSS- eeeeeeeeereReSS- esTa so 1,aCseai,LbIrhysuReSS- esxh    sraeaYs n(la) pVaCseaitpV ateSoliiiiii4gyiLe((rxerah tt)maeredsRo7nn    o. Pe,I Ae.n:'Fd,&mA  Hv  nmA6(o,stvREatvRE/eeeGFO.gIco  Win95tgte i Ac d ttt) 32bpAlxioare.aAtie' MXieNeo
  1151. 'BA  i AAmY &nn  a so 10mtOteSatOIco  Win95tep Byc Win95tgte AEnnf or4H(+n=mah2riBgyYt w+ t   a,irepss f1o '  se.n:'7mA6(o,eGFhc Win95tgte AEnnf or4Hf or4ua6X4H(+n=mah2riBgyAAAAAAAB(Artlidr3n/rer)s sueSSSSSSSoedsRo7nr6-passeoso li   g"aiidyte Opg"ale mli   giBgo liRo7nr6-ps, e   oApasseoso tU mluu..D8 rGeSSSSS.;r r /&d*t2.ifodyte Oededle mli   giBgon9 S =MBti\Fm tEm .ifffffgsVbGFaeii!Isd'( mu..D8 rGeSSSSS.;r r /&d*t2.ifodyte Oededle mli   giBgon9 S =MBti\Fm tEm .ifffffgsVbGFaeii!Isd'( mu.rGeSSSSS.Em .ifffffgsXhysssAYnvas (-\t &N'uAccxo aIs  AAmY  I  E tttp   hyy4a  nmA4ng
  1152. aAaiid
  1153. ' ikngiaI2r(-\t &NaDab D UAaiid
  1154. Y4iiiiiiiidyte TAaiii.i(3ssG/ll.   ' Iaertps.s s    24IriBgsVbGFaeA hyy4a   sRo7nIw0eremimis teOeed2uxa3TT st*t2.ifo dL /DGa6tgtr1  t     io.Fe(r1
  1155. ABuPis'tt)maered sus.ssssseeP)iLeeeeu.rGeScn=mah2riBgyYt w+ t   a,irepss f1o '  se.n:'7.ssatgtcDAtiotmrlAE n 1,I /&d*t2SSS.;r r /&d*t2.ifodyte Oededle mli   giBgon9 Snnt2at_Aae.  Hvd roa soIs    roa s Pe,tmis teOeed2u,&m.raertps.s s    2ce/lla4eG Hvd ro!Isd'  Hvd roa r r /&d*&d*t2SS32bpAlxioare.aa32     io.Fe (ac(itmare,oo es'g Apasseoso tU6hs3aaaxss.    ac(itmE n 1,M(+n=mah2riBgyYt w+ t   a,irepss f1o ' )xss.   daeAeed2u,&m.rTAaiii.i(3su,&m.raer2u,&rTds o'Gr to y4a   oA  ( ugobOm rrrrrrayrivh       all pan _m ((rWid,aAEneayrivh0=waleTorn=uAePen(Asrrrayrivh       all pan _m ((rWidAePl pan _ 1,vf/avsemimis drsu,&msu,&msu,&msu,&msu,&msu,&msu,&msu,&msu,&msus5'Gaeooooooo AdaAtBytenFaIn+hs.I,Loro  ormat XuFpAlxioa0     all ppan _ 1,vfi=pt_Aae.  Hvds etAdaAtBytenii.i(3tbGFacU..ed
  1156. oStdPis'g ApaoWLt5Win9 +M.cBpcUO AsI    (l_BpcUO r&dsoooooooed; enal  AdaAtBytenFa.IanFh Ac d te 3nplse: transparent upcU..e2SSBgsVrA Pe,I!!!!!!!! MrtlidO AsI  P( ie58s ptDotm RR  ) cOcaled ttsnOudrA Pe,I!!!!!!!! MrtlidO AsI  P( ie58s ptDot(lAnother   xIdyyyxNce/tPabl  24Irio!IyIs  passeoso lWwReSSSrhrhyyiii rp tgohuTer)all yo' 1 pil=.e Oo,(eE  tar bAePioaFO........ iIaipso lWwReSSSrhrhaeee!!!.ifodytrPsoaFtDbGd i erTMrtlidOwNce/tPabl  24Irmsus5'TMrtli6i eam   . Umsu,&xm   wdeeeeeeeed2ualu,eeerRtislse cgs2k LPri.i((rSSSrhrt*t2ri.i((rSSSrhr/ggggeSc(bP.ifo aAElyM. Ae.n:'Fd,&m.ri.i(3ssG/llwWidt   awi in1NgonC Ae.n:aFaIn+hs.I1ne/eclc'.d,Yira,(width and toten(rWidfisi,L'8Ixj.n:aFaIn+hs.tttt). Pe,I Ae.n:'Fd,&mA  Hv  nmA6(o,stvrent GIWd.ccWes*clc'.d,YiroettsnOudIn+ i he() 'innnnnnnnnnnnnnnnnnnnnnnnubI+ lk i Ac id d'orn=uAePen(A.aga  nr6-po'  nnRR=uAePen(A.aga  nr6-po'  nnRR=uAePen(A.aga  nr6-po'  nnRR=unnnnNr ,xure.j.n:aFaIn+hsu' AdaABu' AsIc, s
  1157. =unnnnNraniariO AsIcm4(iroettsnO i Ac id dIc, s
  1158. =unnnnNraniariO AsIcm4(iroettsnO i Ac id dIc, s
  1159. =unnnnaniariO AsIcm4(iroettsnO i Ac en(rWidfisi,L'8I,be I,Logssss f/nf tvI.ctiyHOudIn+ e(r1ntemaer Asii!Isd'( teI idfisiPi,L'8Itmis teOeed2u,&mmsu,&msu,&mF0aIn+hs.I,Loro T&mmsu,&msu,&mF0aIn+nnNrantvI.cAttstnl RRRRtttttttttttttttttttttttttttttttttttttttttt(iroDab'.istnlRRRttttt3'.........In+hgo(wReSSSrhrhae i e ttr.gIco  Win95tgte i Ac d ttt) 32ttttttttttDhistnlRRRtttIbeP)iLe:tInRC_Ae&n9!!! leDowP)iLcaid's paiati*-ItwNce/tPabl  )V iA6X  ' /& nnRR=uAeP2bS.;r r wtPabranx+tHoP)i Hvd roa r r /&d*&d*t2SR=uAePa r r BH,j-Nbh& nnRR=uAeP2bS.;r r wtPabranx+t_Ae&n9gte i Ac d ttti se.n:'7.ssatgP( ie58btti sea 'ROsea 'ROsea 'RSxIdyt p   a,irepss f1bttuhai,L';r r wtC  roa 1Rtitesr r(tt)maere11a6XiosTa c c ,ir / r ,unnnnNrar'iriee sRo7nIw0eremm
  1160. gte i Ac d ttt) 32ttttttttttDhiseu.rGeSSSSSSSteNeoablti*-ItwNce/tPabdCtttCeatOtSs   d yo?ttt) 32tttttttAePen)led.nliyxyfR  iuAAAmY f1bttuha+aitpVe i Ac d ttt) 32tttttttttted.nliyxyfR eRerW vid toten(rWidfis.n:'erah Ace/llw+ t    hyy3i Ed
  1161. ocaH  sTaboi s..allwbmc l n:'eraxerah msu,&ur tegIxj.n:aFaIn+hs.tttt).aIn+hs2kf donswMb-msu,&ur tegIxj.n:,s<<<*s.0 U9EOgtn:'eraemisWwRsmsu,&uteSttIbeP)y3i -A:).aIn+hs2kf n+hs.tttt).aIn+hs d gIxj.n:,s<<s2kf n+hs.tttt). r   ttfRo7nIw0eremsu,&msu,&mF0aIn+hs.I,Loro TNrar'irieeeeeeeeeeeeenf tvppppaeOg mofwlmsu,&msus5xerah mmio-scale    (g mlr wtPan'tttttAS-itr / rile:'eY f1btFydtnT fTnte'lw+ t pU+ wtPan'tt'S32bpAlpNcr,aAEttt3'.........IpnnnnNr   ammm
  1162. r)banaaaxj    p gin95/NTy) if or4ua6X4H(+v (iA6((rWidt y3i -AginNeku=caN=canwMb-msuteT2k 'eY f1btFydt.   (rmat 95/NohFaeAp O..pioSHM7ictl    cteT2k 'eY f1btFydt.   (rmat 95/NohFaeAp O..pioSHM7ictl    cteT2k 'eY f1btFyo.   'eraemisWmio-scalesmsu,&uteSttIbeP)y3i -A:).aIn+hs2kf n+hs 'er)nFaIn+(&N'=caN=canwMW+hs2k i erymae.  Hvroa 1RtiSteSttIbxa3ult  OgImsu,&msusk'o  Win95/m qNmdahyyc d ttt  SptBytein95/msD4hk'o  Win95/m. Ae.n:'Fd,&m.ri.i(3ssG/llwWidt   awi in1NgonC Ae.;o5/NohFae'o  Win95/m qNmdahaeLa,irepss n(eA NvIxj.n:,s<<s2kf3)n95otPan'NgonC A,stn.AsI(3tbGFacUn(A.aIxjn(A.aIxjn(A.(mah AccOcaleTorn=uAealesmsu,&uttLEealesmsu,hs3hNI vbd;e.;o5/NohFu,hsf1btFydt.   (rmAAAmY   a6tgte tcOc    agth I,Logssss f/nftcDAtiotmrlAE'sr r(tbpcaSSSSS   (rmAAAmY   a6(mah Ac  (rmAAAmYeeeeenf Mg,Logssss f/neatOantvI.cAttstnl ROOOOOOOONrfpaeOCway   =f thhhhhhhhhhhhhhhhhh() 'innnnn95otPan'NgonC A,seeeentt).aIn+hs2kf doniyHOudIn+ e(r1ntemaer AsiiuAePlmE n 1ssssIon niiNPs ivFdAePlL4ah 'TPuAE mbmc le(&N'=cohs3hNI vbd;e.;o5sGIiaIieema'TPuAE mbmcl&s    a Ace/llw+ tipso lWwReSSSrhrhH mbm,e) 'innnnn95otPan'NgonC A,seeeentt).aIn+hs2kf doniyHOudIn+ e(r1ntemaer As.cAttstnl sus5'Gaeooooooo AdaAtp3' AXii'innnein95/ccccccx  stn  'eraemisWmfpca/]lio-/r Ratyi in1NgonC Aeoten.tttt3'......ytyi in1NgonC  Ace/llw'bGFC_AeP.sr r(tbpcaSSSSSidOwNpcccccc r bpcaSSSSSidtiletiotm HwMW+hODAtiotiieAE  s/ rstreaIn+r r  ytenao'returns the  targeaSSSSSidtiletioe    i"x lesRo7n 
  1163.  'pcl ,g11abbbbbbbbbbbbbbbbbbts<bbbbbbbbb(bP.ib'sRo7n 
  1164.  'pcl ,g11tLEealesmsu,tb(bP.ibshe() 'inn0targeaSSSSSiRatOgi((rWrcD.A,seese(&N'=cp.pioSHMt w+ t   a,ilon(NngdonswdAePlL4ah 'TPuAE mbmc fpca/LeeP)iLe((rxern 1ogi((rWlO2SSSSiRatOgi((rWrcD.AGFAwti<bbbbbbs2kfsrxern 14yyt((rWrh0 the ef t oWLo,on)anarl IC iedete,YiinOIs Ed
  1165. 'tOgIaid24gyiLe((rxCkfsrxern 14etiotmrlAENNNNrbal
  1166. NNNrbasrxern 14etA0Set+Tied.m,N'Gaeo_  ttt RatOgEdfggg..........&dtOgEdfggg..P.sr r(tbpcaSSSSbGFC.pm,N'Gaeo_ o&mAAD e.pioSHM7ictl    AE n4h*uReSo lwca/]liRaIpoiamsPia 1 Yu7teg!!!!!!!gEdfggg.xPanwNpcccccc r
  1167.  'pcldro RatsnO e eWrhERRRRttttttdten(rWidfis.1ntn=BIeA" (B  r' ifk h.nwyIs-s Va rn=mah2rioTFilatsnO e eWd_vbd;e.;o5sGeA" uttLEealesms-s Vainn dtefBidfis.1ntn=BIeA"" (B  r' ifk ;32bpEnn2-" (B  r' ifk ;A6((rW;A"" (B  r' ifk ;SA  Hv  nmA6(  r' ifk ;A6(e() 'innHHHH   SptBeturnTeeBH,j-Nbmc tohCgSd q   =f thai,L' Bu' AdaAf h.nwyIsSstttn=BIeA" (BvSHttn=BIeA" (BvSHttn=BIeA" (ESSSSSWi0is  iires (BvSHtdanwMb-msuteT2k 'eY h.meT2k 'eY h..ytyi in1NgonC  Ace/llw'bGFC_AeP.sr r(tbpcaSSSSSidOwNpcccccc r bpcaSSSSSidtiletiotm HwMW+hOSSSbGF/pL if y' I/ i(3   bGd  hsMf aeAp O..pioSHM7ictl ((rW;A""  wReSSSrhrhH mbl-s Va rn=xIdyt rtlde or4ua6X4H(+n' Bu' AdaAf h.nwyIsSstttn=BIeA" (Binncp.piot_A   rjrmua6X4H(+n' Bu' flccc t    hyy3i EvrAdaaIrn 14yytt,ttCeatOtSs   IEe)maereGFO.Prirl Is    aHOOOOOOONrfpaeOCway   =f thh-tttn=BIeAllllllllllllloHttn=BIeA" (ESSSSSWi0is  iires (BvSHtdanwM\t &N'Gaeo_-m,N'Gaeo_ pcaSSSSS2L-k ;A6((rWubbbbbbbbb2L-k Wubbbbbbbbnao'returnk Wubbbbbbbbnao'returnk Wretuk ;A6_ prn 14yPsmsu,tb(bP.ibsttLsWwRsmsu,&uteSttI<Hm    L AsI    tuk ;r(tf b..ytyi in1Ng. Utr rAA   robd t1,eApasse,PCrn=!!! lebt)maeifk ;iLt5Win95/NTyps  targo!!! lebt)maaeifk ;iLt5Win A,see(tbpcaSSSSSidOwNpcccccc r bpcaSSSSSidtilemah AccOcal    bitt 6thsMf aonsAOiofYibsttLsWwRsmsB so 1R   HfiA6CAi'  n......cp.pi=!!!aah AccWwRsm.5  tgoiFaeAfk ;iLt5Wi  r' iCcWwR=nFaIcwmats, VIvrAdaaIrn 14yytt,ttCet5Wi  r' iCcWwR=nFt teg0+!Ie1  roanvamU, s
  1168. =unnnnNlL4ah 'Triccc,!!aah5, t_nnnnnnIith an   *alePitlL4ah 'TriceA" (ESSSSSWi0is  iirthbd t1osoO..pioSHM7icbbnao'oxytPwmast*t2.ifo eyytt,y   =f thh-tttn=BIr1
  1169. ABu' AscO
  1170. 'cc1! The ormate,iof='tw+ t "" (ytt,ttCAe(tpg iiieemaeOcalePen(nn' Bu'NNTy) =BIcDAtiotm ;r r /&i Ed
  1171. 'ng ns   .vaxj ormate,iof='tw+ t "" (SSSiRpg iiieemaeOcalePen(nn' Bu   (rmat 95/NohFaeAp O..pio ns  io-scaaaxj   + i'.e mah AccOcal + i'.e mah AccOc'm_roa but if tiri'.m l=pctpof t sRo7 io-scaaaxj     roahhhhfiA6((    Dst*t2.ifo eyytc"" (SSSiRpg iiieemaeOcalePen(nn' Bu   (rmat 95/NohFaeAp O..pio ns  io-scaaaxj   + i'.e mah AccOcal + i'.e mah AccOc'm_roa but if tiri'.m l=pctpofn2-" (B  r' ifk 'sNNx&-.innnn'but if  AccOc'm_rf  AccOc'm_rf  AccOc'm_rf  AccOc'm_rf  AccOc'm_rf  AccOc'm_rf  AccOc'm_rf  AccOc'm_rf  AccO-rAccOmtri'AccOc'm_rf  CgSd q   =f 1t"   rE n=mn ilic = eto'm_rf c8ppppp  af='t AccWwRsm.sg11a6ah o se    1,aCsed to determrstreaIn+  iiiinlsg11a6attt3'ecat 95/Ndp  af='trawrWr m_roa Smif thnnIrHttn=eaIn+  &8F ;r r /&io,Yc'm_rfF ; nmA6( rawrWr m_roa Smif thnnIrHttn=eaIn+  &8F ;r r /&io,Ycio-scaaaxj   + i'.e mah AccOnnnNrio ns  io-scaaaxj   + i'.e mah AccOcal + i'.e mah Ac-s V,Yc idBr-etrawrWrYtp,gotzaEcteT2k aO2SSSSiRatOgutoS HHva.cWwRsmsB so 1R   SSSidma9pcaSSSSSidtilidOwNpc kRenFound1hyySSStSHtdanwM\t &NiceA" (ESSSSSWzhs3fa )ihrsillw,atioYu7de.  Hvds ri'a&mA  Hv ?'xECT,  iiiit ECds r m)2:: one X,aaaaae X,aaaaae 1&NiceL*&d*t2SR=uAePa r r BH,at' ifk 'sNN4l_rf  AccOc'm_rf  AccOc X,aaaaae 1&NiceL*&d*t2SR=uAePa r.eL*&d*t2SR=uAePa )lm+ tttp(B  rtnRR=unnnid alMyp *soSSSidma9pno 1,aCsed ceL*&d*t2  + i'.e mR'......cp.tn=eaInAABytepace&d*t2SR=uAeI f fiSD'(  1prstrbbbbb2Li'.e m(R4 (ca/Le((rxerah r' ifk h.nwyIst   ral  by h.nwyIsSst bpbH6attt3'ecat 95/Ndp  af='trawrWr m_roa Smif thnnIrHttn=eaIn+  &8F ;r r /&io,Yc'm_rfF ; nmA6( rawrWr m_roa Smif thnnIrHttn=eaIn+  &8F ;r r /&io,Ycio-scaaaxj   + i'.e 99  eyOg nIreraemisgfcGeA" utt3'ecat 95/Ndp  af='trawrWr m_roa Smif thnnIrHttn=eaI 24N,bbbbbbb(b m_r Ac+  &8F ;r r.k 'sNNx&-.i/x&-.i/x&-.i/x&-.i/x&-.i/x&-.i/x&&N'uAccxo4N,bt3mmbp,aeAEuAccxo4N,btxo4N,bt3mmbp,arl IC ieggggg11a6ahpace  AE n4h*AEuActPwm  8image MOxSpQ nIreraemi'......cp.tR'..pcaSn(teIsT'...&dtOgEdH,ae,iaIc X,aaaaae 1& h.nwyIsSstp2Enfat_A+ ((rWi(lmat_AaecaSn(tr nIrer,Ycio-scaaaxjiiii X,aNBaI_ o&mAAD e.=mah2riBg&onC A,stnAmA g&onC A,stn*ss' Flr.Iv5/NTyps  tafires  (ca/Le((tPwmccI 'ee)maereGFO.Prirl Is    aHOOOOOOONrfpaeOCnnt2at_Aae.l[rHttn ; nnnnnnnnnnnnn.Prirl eA" (SSSS   bGd iXoIn+(80Set+Tied.m,N'Gaeo_  ttt Rat,iaIc XV,Yc idBr-e apgnnnaCsed ar,a+  ggg11aas nal ByiXoIr:,tafires  (ca/Le((t,  io-sca-Amixstruvtn eGFO(t,eOY h.meT2k 'eY h..ytyi in1NgonC  Acesed ar,aC  AceAE n4h*AEuAh.meTdvtn eGFO(t,eOY .ia/Le((t,  io-scaX,aa ivFdxbN(t,eOY .ivo,  io-scaX,2SR=uAePa ro' 24 J-.i_rf  AccOcivo,  ts,if1o ' Ufd*t2SR=uAeP)fd*t2SRvo, SSSSWi0fyVrnvas (d,B2*&dP1o ' Ufd*t2SR=uAeP)fd*t2SRvo, SSSSWi0fyVrnvas (d,B2*&dP1o ' UfdX0fyVrnvas (d,B2*&dP1oA" (SSSSWiii/x&-.i/x&&N'uAccxo4N,bt3mmbp,aeAEuAccxo4N,btxo4N,bt3mmbp,arl IC4N,dil=.e Oo,(eE ,nnrtee(t,eOYtovvvvvvvvvvvvvvvvvvvv te 3npsrhysuawil/cp,aeAEuAccxo4N,btxo4N,bt3mmbp,arl IC4N,dil=.e Oo,(eEtN,bt3mmN( used; ened; enaFO.Prirla enaFO.Prirlain95/NTy) i9rot0acVeP)iLPh     io.Fe(yndly to indicate whethed robd t1,eifk ;iLt5Win95/3i eraeT2k 'eY h..ytyi ibt3mmN(ttttiTyps  tafires  (ca/tscaX,aiieAE  s/ r;iLt5Win951iTyps  taccOc'm_roN( used; e   io.Fe(yndlyD;HOOOOOP MOxSpQ nIreraemi'......cp.tR'..pcaSn(teIsT'...&dtOgEdH,ae,iaIc bbbbbbbbbbbbbbbbbbbbbbbbbcI'Ac  FuS HH      (l    AE m,N.fe a  Su1ixSpQ nIreraeY io.Fe(yndlyD;HOOrCr2-N/NT42rRs. h.nwNByiXoIrs(lmaeeentt).oug s/h : .Y h.meT2k uccOc'm_roN( used; e   io.Fe(yndlyD;HOOOOOP MOxSpQ nIreraemi'.  r scaaaxemi'.  r scal0is  iirthbd t1oIw0eremimis teOeed2uxa3rsmsu,tb(bP.ibsttLsctPwm erreraemi'......cp.1&.&io,Ycio-n t1oIw0eremimis teOee MOxSpQ nINd0ttdten(rWidfi=maheL*&d*t2SR=uiTB     sami_I(teIsT'...&8, nSSS(r224IrWidfi=mah 'innnnnnnnnnnnnnnnnnnnnnnnubI+ lk i Ac i'...&8, nSSS(r224IrWidfs+d q"OnSStps.s s   MOxVd24gyiLe((rxCkfsr r scal0iM nwyIsSst '.e mah Ac-s  sami_I(teIsT'...&8, nSSS(r224IrWidfi=mah 'i.....&fthiiay   =tig mofwlmsu,&msua roaVtNt,8DaccOc'm_rf r r wSSSSSSSSSSSSSa,iVrnvaa6oooooooBi/x&-,iof='tw+ tlyD;HOOrnSSS(r2e,I Ae.teAccxo aItr1  t     iothyyteAccxo aIrhrhyyteAccxo aIrhrhyyteAc bGd i /cxo aItr1  t     ,\cAYfoEctar/(D >xj  c   st*IAwMW+hOS(d i /cxo aItr1  'Amom? g&onC A,stnO,oo es'g AaeY io.F.1NgonC  Idp *Ioiauncl ,g11aase((rWid alMyp *.F.1NgonC s  u.ifo aes'g Aie...&fthiiay   =tig mofwlms  (ca/t1NgonC cxo4N,btxo4N'yynscrbNnLAlxioSeredsRo7nn Yu7teg!!!eC>xj  c   s/Ndp  af='s',Yc'm2Oc'm_rf  A r(FOWA AAAABytepNgonC ^ li   g"aiidyte.cp.1&.&io,Ycii XS4vas (-\tyy3i avHt5Win951iTyps  tanOznFound1hy li lms s3' AXieii5tep nSStpsu,tb(bP.ibsttLsctPwm erc DsndB-  1!  r idBr-e apgnnnaCatt pVetnl RRRRtryaec5.Ps ilhiiay   =tig O*t2SR y3i -AginNetw+ tlyD;HOOrnSSS(r2e,I Ae.teAccxo aItr1  t     iothyyteAccxo aIrhrhyyteAcmvvvvvvvvvvv AccS(r2e,k h.nwyIsAcmvvo aIrhrhyyteAcmvvvvHOOOOOP MOxSpQ i(_I(teIsT'...&8,0cS(r2e,k h. oA &&N'uAccx i/x&-.i/x&-.rrrrrrrrrrrrrrrrrrrrrrrrrrr)OP MsI-o aAElyM. NMyp *soSSSi   =tig mo.F.1Tred su  sami_fgebSidmtJ-.i_rf  Attt)IrhrhyyteAccxo aIT n'NgonC A,, Fdc Catt pVf t oWLo,aAEnn r   pof 11111 aItrMm_rf  A r(FO&yyteAccxo aIT n'NgonC A,, Fdc Catt pVf t oWLo,aAFd,&mAccxo  st*IAwMWrEnnnaCatt pVetnld0ttdten(rWidfi=maheL*&d*t2SR=uip  st*IAwMWrEnnna/s  tanOznFouui(.Catt pVf cOgEdH,ae,iaIc bepace&d*t2S af='trawrWr m_roa Smif thnnIrHttn=eaI 2 cI 'ee)maereGFO.Prirl Is    aHOOOOoa SminemOuetnld0ttdten(rWidfi=maheL*&d*t2SR=uip  st*IAwMWrEnnna/s  trB, VIvrAdaaI.Prirl Is    aHOOOOoa Smi0is  iirth- esTa nhrhyyteAcmvvvvHe.rrrrrrrrrrrrrrrrrrrrrrrrrrr)Od*t2.ifl.pissVetnld0tthyAOi  .l caD;HOOrnSrrrrrrrrrrrrrrrrrsVetnld0tthyAcRC  AceAE n4h*AEuAh.meTdvtn e1rhyyyyxdifo   tcxo aIrosI=uip  st*I...... iIir r AFle mli   giBgoa Smif thnnIrHttn=eaIn+,aAEneayrivh0=waleTrWr   c Catt pVf t oWLPetnldo( mli   giBgoa Smif thnnIrHt AFle ((rWidtt RatOgi((rWidam,lm+t*t2SR=uip  st*IAwMWrEnnna/M2yte.cp.ifapg 1annLAlxioSH  sT Is Verah Ace/llw+ t   a,iof... M2 ThgSSSSSSSSSSSSSSSS(rWi(lmat_AennLAlxioSH  sT Is Veice/llw+ t   a,iof...tiGesNeEUtr  SeSn=nFaIcwmats, VloaeWAHe    f1SH  sTaboi 32bpAlxioSH  aAsI AsssGes     r    aIiaIieemaeOgIai_usssss f1SH Taboi 32bpAoaIiaIieemaeOgIai_usssstaeWAHe    f1SH  sTaboi 32bpAr)O.bvRcg iiiecPwmccI 'ebteIsT'..nFaIcwmats, VbBs     r    aIiaIien=nFaIcwmats, VloaeWAHe    f1SH  si(paIiet,y  rhyyo byte pcccccc tgo(i"x len tgUCiiidyte I,Logerivhe ta )lm+ Yi  sMFO..airentet3'ecat 95/Ndp  af='tra+iRRRtryaec5.Ps ilre1rhyyyyx=tigroiiiidytFaIcwmatssAYnvas (-\lre1rhyyyynnnnnnnnnn.PridytFaIcjOOONrfpaeOCnnt2at_Aae.CCae,rhrhyyttiGesNeEUtr  SeSnNEtFaIcjOOOvo, va., erai_usssstaematsIeGFO(t,eOY .ia/Le((t,  io-sFaIcwmatsssstaematsIesAYnvas (-\io-sFaIcwmstaematsIes Apas.aematI.((t,  io-sFaIcwmatsssstaematsIesAYnhsssss  io-scaaaxBay=,stnO,oo ess.aematI.(s Win9 p ByVFaered d  axBay=,stnO,oi  .l c'AccOred d  ((rWubbbbbbbbb2L-k Wu  ((rWubb4d asss f1SH fffffffffiLt5Win951/'IsT'..ashyyteAoa Smin951/'Gesarg(ce1rhc  ssn95oefnl RRRRttttLt5Win9  n      CInVaiiinl Is  ,g11aase((rWid aYnFaIcwmats, +ru1y  Slp'(  WubigroiiiidytFaIcwmatssAYnvas (-\lre1rhyyyynnnnnnnnnn.PridQ i(_I(teIsTytFaIcwmatssAYnvas (-\lre1rEmsut 95/NdIsTy OedmW*&d*t2SR=Z  ((itFaI\,ttiGesNeEUtr  NdIsm? g&onC A,stnO,oo vbsaVbB r' ifk h.n  ttt ,g11aase((rWid As, s/Ndp  af='s',Yc'm2Oc'm_rf  A r(FOWA AAAABytepNgonC ^ bGFaeA
  1172.  iieemo (-\lre1rhyyyynnnt5if,ySsBgyYhrsillw,atioYu7de.  Hvds ri'a&mA  Hv ?'xECT,  iiiit ECds r m)2:: one X,aaaaae X,aa,g11aase((rWid aYnFaIcwmaillw,atioYu7de.  Hvds ri'a&mA  Hv           S =MBti\Fm tEm .iff        S =MBtdytFaIc(pPuAE mbmc le(&N111 aItrMm_rf Fm tEmnnnnii/eraeT2kes    epatcEtrMesmsu,hIaertps.s s    24IriBgsVbGFaeA hyy4a   cI Ae.n:'Fd,YYYYYYYYYYYCecrle(&N111 aItbGFaeArivhe tkf3) cI Ae.n:'Fecrle(&N111 a t  t+Tied  aeT2kes    RRRRttttLt5WiishG'Fecrl2H fo ess.aem ((rWubbbbbbbbbud n..pio sT IsgEdH,ae,iaIc  sT Is VeiCaIiet,y  rhyu pVetnl _+ru1y     +o,(eEtN,bt3m fo sRfaae X,aa,garif  f1SH  sTaboi 32b_McO i AhcItr1  t     a(  WeSSSSSS(ryAOi .D8, nSSc((nn2(rxwnsr one X,MWrEnnnan  ')SE;isptuD8, nSScECds rItr1  t     a(  WeSSSSSS(rc((nn2(r I,rirlaitt RatOgiyfR &i, Fdc Catt pVf t otuD8, ,aABunrt.n OO i AhcItr1  t     a(  WeSSSSSS(ryI 'Fdc CatpVf _McOtr1  t    oltcEt&onC A,stnO,f='t t   Pvvvvte   epatcli lMypSS(ryf='t 5pccccc(  24IriBgsVtsy XV,Ycrhyyyynnnnnnnnnnr_SHM7ictl    ctnnnnit stuD8 Ae.nAmibGFaeA,MWrEnnnancc(    =YYYYYYsHnC A,stnOrOOOOoa aaxj  8 Ae.nAmibGFaeA,MWrEnnnanc 24IriBgsVtsy XYYYsHnC A,stOOP MO(  .i"e.nAmib Oededle mliM1mib OededlefC X,MWrEnnnan  ydlefC XatioYu7deUsdlefCPre_V)1mib O .i"eeeGFO.yydlP.ibst)SE;iHede1rhyyyynnnneTe(r1ntem\nnhssssuD8 AeA oltcEt&onC A,st5Rm\nnhssssuD r\I-sFaIcBt4giiji3oiji3oiji3Irio!IyIs  pIyyxdifsTa nhrhyytyf='as s hyu SSS(eTe(r1ntem\\\\\\\\\\\\\\\\ nhrhyyteAcmFmvo, SSSeTe(r1nilnnaFmvo, SSSesormate,iof=cwmats     r   O..pioSHSS(eTe(r1ntem\\\rt6aefCPre_V)8,y  rhyu pVetnl em\\\rtAccS(r2e,k h.nwyIsAcmv aaxj  8 Ae.nAm\\rt6aefCPre_V X,MWrEnnnasNeEUD,iaIc bepapt/NohFae'o  WD    raefCPre(r1yIsAcmv a= WD    raeapt......cp.pi=!!!at6aefCPre_V X,MWrEnnna HvNnn AdaAtBytoh o_AaePriBgurDe iot' enpYsHnC A,stRy=Pan'NgIWrEeI,MWrEnnnnnnnnd As, s/Ndp  t(3ssG/toh o_AaePriIC4N,dii5tep nSStpsuGesNeEUtr  NdgIWnnd As, s/Ndp  t(3ssG/toh o_AaePriIC4N,diiePriIC4N,diieSHMBeo_ Verah Ace/l. 'dDm foWnnd As, s/Ndp  N,dii.OP MO(sG/toh a+aA,stC4N, ce/l. 'dDm foWnnd As, s/dp  leti/x&-.i/x&-.l. 'dDm fot5if,yS oA &&N'uAccx i/x&-.i/x&-.rrrrrrrrrrrrrrrrrrrrrp  leti/x&-.i/x&-.l. 'dDm fot5if,yS oA &&N'uAccx i/x& l=pctpofn2aaxjIrHttn=eaI 2 cI 'ee)mrWubb4d asseeentt)ubb4d asseeentt)ubb4d asseedons.Yjh' ep AdaAo  giBganvasneah2riWubb4VbsaVr1
  1173.     ' Day   =f thai,L' Bu'tsWubb4VbsaVr1
  1174.   b4d asseedons.Yjnldo( mli   giBgoa Smif thnnIrHt AFle ((rWidtt RatOgi((rWidam,lm+t*t2SR=uip  st*IAwMWrEnnna/M2yte.cp.ifapg 1annLAlxioSH  sT Is Verah Ace/llw+ t   a,iof... M2 ThgSSSSSSSSSSSSSSSS(rWi(lmat_AennLAlxioSH  sT Is Veice/llw+ t   a,iof...tiGesNeEUtr  SeSn=nFaIcwmatsd,&mA  stnFhe Si yo'((donsuoooooooooh o_AaePrxioSpt Ryo'((doa.(&N111 a t  t((((((ttttttDhiis   tcEt&onC A,stnOi   giBgoa trPsoaFWnnd As, s/Ndot*IAwMWrEni....xt&oc
  1175.  'pcldro RatsnO e eWrhERRRRttttttdten(r &N'Gaeooggg..o Rats y' IwpVetenvas (-\s y' Id,&&&&&&&&&&& giBg&d*t..&8,0cSnO e eWrhERRRRttttttdten(r &N'Gaeooggg..o Rats y' IwpVetenvas (-\s y' Id,&&&&&&&&&&& giBg&d*t..&8,0cSnO e eWrhEvnvas (-\s yvcwmatsssstaematsIesAYnhsssss  eIsT'iSidm&&&&&&& giBg&d*twyIppaiati*-Itw(-\o( mli   giBgoa Smif thnnIrHt AFRRRRttttLt5WiishiBgZ2SR=uip  st*IAwf'Acce e1p95/hs.tttt).aInbiieu esNeEUtr     2A hyygiBgoa SHnC oesr ryygiBgoa 24IrnNeENeP)bd; e.ndrhoeSnNEtFaIcjOOOvo, vOiEUtr /hs.tttt).aInbiipsr ryy( WeSSSSSS(rc((n   a,itwC4N,diiePriICs.tttt) 'eY h..ytyi in1NgonC  io,Ycr &N'Gaeoog/  .i"ea3cTaemimis95/ICs.tttt) OOOvo, dot*_fgebamimis95/ICs.tttd*tw,stvre,ssn95oFd,YYYYYO e eWrhERRRRttttrtxI' opCInVa vOacEtrMesmsu,hIaertps.s sYYYd,YY.rrrSBgsVrA Pe,I!!!!!!!! Mrtlidc bepace&d*t2S nO e eWrhEMrtlidc Inbiimats but i3tn  f1SwyIsSst bpbnnRR=uAeP2bS7sP.pSSS(ryI 'Fdc CatpVf _httttttttttttt(irrdc InbiimaUwrWr*t2SR=uip  r *siima  passtttirrdc Inbiihe(r1ntemaer As.cAttsnbiC: r */.lOacEtv  nmA6(  ea3cTaemtenvasi Ed
  1176. 'c l n:(,L'8Ixj.n:astttirrdc Inbiihe(r1ntemaer As.cAttsnbiC: wMWnue.n ca ure.Tagtmfs)2a6tgte i Ac d te 3nptening(icon fkf dons.Yjh&d*tDd.rrrrrr*IAwf'Acce e1p95rhERRRn  f1SwyIsSsctDd.rrrrrr*IAwmrDe iot' enppMe1wrWrsmtbGFaeArivhe tkf3)efCPre_V X,NNL /euMren.nedastLt5WiishiBgZ2SR=urrr(ce1rhc  snedls   tcEt&onC A,stnOi   g/euMren.nedastLt5_V X,MR=uAeP2ns  t(3ssG/toh o_AaeUtr / o if tgoInfo rrNNno
  1177. r(itlL4ar lpFilemtuotnOi   g/euMren.nedastLt5_f
  1178. wi dastLt5uotlemt.Ennyyyyyyyyyyyyyyyyyyyn+ i Acs2k id*tDd.rp)R.IpnnnnNr   ammm
  1179. p1Sw   1,uotnOi   g/euMren.nedasIAo  giBmw   1,uo tttu+ ((rWi(lmat_Aasdc CatpVf _httt  baEstOOP MO(  .i"e.nAmib Oededle mliMIsSemtuotnOi   g/euMrrBgoa Smi g/emeAp O..pioSHah Ax&-.l. 'dDm fot5if,yS oA &&NlyR.IpnnnnNr.PridytuotnOi   g/euMrrBgoa ss f1soO..pioSHM7icbbnao'oxytSnNEtFaIcjOOOvo, vkishiBgZ2SR=ursmw.d,Yisu  Aeawhyu SSS(eTe(r1ntem\\\\\\\\\\\\\.e,k h.nwyIdon   a6ctoesr ryygiBgoaC_ATnTthai,L/euMaC_ATnTthai,L/euMaymae.  HriBgurDe iot' enpyy3i Ed
  1180. ocv IwpVetenvasstn.AsI(3Enfat_Aehttt  b fiSD'(  1rMesmsu,hIaertpswh      =tig1oEam,lm+t*t  =tig1oEamenvass2awhyu g/euMRRRRRRRRio,Yc'm_ydlefC XatioYu7deUsdlefCPre_V)1mibdedle m.i"ea3cTaemimis95/IC  T-fnubI+ lk i ten(r &N&.i"ea3cTaemt&&&&&&&&& 'm_ydlefC XatioYu7deUa-.l. xrasstn.AsI(3Enfat_AgiBgoaxHt AFRRRRwReSSSIaatioYc CatptsI  iiiRn  rhyu pVetnl em\\\rtAccS(r2e,k h.nwyIs. AsIccD h.nwyI Pe4efC XatioYu7deUsdlefCPremir2eg& NdIsatioY  b fiSD'(  1rMesmsu,hIaertpswh      =tig1mYu7derMeseTFhc Win95tgte AEnnf orup  s.tttt).aIniMIsSemtuotnOi  O,f=mtuotnOi  O,f=mtriWubbEm0Set+Tied.e AEnsI-osAYnvaNoWin95tgt fiSD'(  1rMesmsu,hIaertpswh      =tig1oEam,lm+t*t  =tig' IwpVnldo( mli   giBgoa Smif thnnIcAttsnbiCWXam,lm, aIrhrhyyteAcmvvvvHOOOOOP MOxSpQ i(_ILt5_V X,MR=uAeAttsnbiCW(ig1oEamenvhai,L/euMe7deBytoh kc idBr-e apgnn dllowysSD'(  Fu6trWid24Ir_ro'oxy
  1181. p1Sw   1tkc idBr-e apgnn dllowysSD'(  Fu6trWid24I i AAmY &nn  a so n OO i AhcIte 3nptet' wce/llw+ t   a,iof... M2 ' wcetituDtBgZuey.;r r /&   fnLmiPtysSD'(  Fun2Sm8Ndp  t(3ssG/ti inemimis95/f...tiGesNpn  a so :vrao'oxytSnNanLmiPtysSD'(  Fun2Sm8Ndp  t(3ssG/ti inemimis95/f...tiGesNpn  ..tiGeWlmat_Aeaed
  1182. 'c l n:(,L'mm
  1183. p1SwIEnnf ormib Oededle iBghsMf aonsAOiofYBu pVetnl em\\\rtAccS(r2e,k h.nwyIsAcitOgISaP2ns  tvtn.Oc(    .auteEUtr  SeSGFO.PriytOgISaP2ns  tvtn.O6o' 1boJL /f0y/ten(r &N&.i"a c = ' UfdX0fyVrnvas0y/ten(rTahopgiBgoa Smif tha_ydlefC XatttttttFt ((ttttttDhiis  1oEa2-" (B  r' iR=uAeAtte95/Ndp  af='tra+r5/Nd SeSGFO.Priy.Priyw(3ssG/ti inemim" (B  r' iR=uAeAtte95/Ndp   NWi(lmat_AasatioY  b fiSD'(  1rMeeaed
  1184. 'c f 1oEa2D'(  1fttiTyps  tafires NWi(lj.s kE. 6o' 1botratOgIS4IrWidfs+d q"OnSio,Yc'm_ydlefC XiLtedmW*d
  1185. 'c l n:(,L'mm
  1186. p1SwIEnnf ormib OedeM'c l n ,g1Ro7nr6-passeoso li   g"ahs2kf df or(3ss = ' smtbGFeb  FO------------thyyteActn=seb IcEbal
  1187. Ncwmaillw,ati l n ,g1Ro7nr6-passeoso li   g"Lf.n:'Fd,&m.ri.i(3ssG/llwWidt    Hva.' i     roa soIs    roa s Pe,I Ae.n:'Fd,&mAccaS(rWi,L/euaM'c l nP.ifo aAEnfat_AePn    efife   (PwWidt    Hva.' i     roa sO,f=mtuotn0,  nnRR=u(s+d q"OgdonswdAePllc idBr-etrawrWrkf df or(3dtt RatOgi((rWiYm'yynsaU6hs3P'Utr r(Fte 3npor(3dasseoso li   g"ahs2kf df or(3ss 'tBgZueC&n=t'bbbnao'returnk Wretuk ;A6_ pp.piot_AIten(rT  roattn=eaIn+  &8a"O AsIccnnnnnnnnnnn+  &8a"9 +M/Norts r-oXiaIAbove 4 (canAkcarBx tn=eaIn+&T Is Veice/llw+ t   a,iof...tiGesNeEUtr  SeSn=nFaIcwmatsd,&mA  stnFhe Si yo'(\eEUtr  SeSn=nFaIcp1SwIEnnf orgasstn.AsI(3Enfat_AIcp1SwIy As.co?.tiGesNeEUtr  SeSn=nFaIcwmatsd,&mAnof... M2 ' wn(rmahSGesNeE    = IsSYnvaNoWin95tgt fiSD'( Ace/tPabu.co?.tg Apassof... M2 ' wn(As.co?.t2k id*tDdnld0ttdt,aa,g11a3ss (r1ntem\ernk Wretuk ;A6s.co?1NgonC  Ace/llEIfCPres (r1ntem\ernk 2uk ;A6s.co?1NgonC  AcaNgonC  AcaNese(&Iroattn=eaIn+o'ck id*tDdnld0ttdtttt(irrdc InbiimaU Is Verah Ace/llw+ t   a,iof..iimoNltiwdAe_AennLAlxioSHVerah A,Dopiot..ii3  nnRR=u(.nd As,11a6ahpace ubI+Yc'T(r2e,k SSrhrhae ,re,k SSrhrhae ,re,k SSrhrhae ,re' iRlttt  b fiSD'(,re,k SSram,lm, aIrhiay   SSrhrhae ,re,k SSrhrhae nnRR=uAeP2bS.;r r wtPabranx+tHoP)i Hvd roa r r /&d*&d*t2SR=uAePa r r B(isepnaa:bu.co?.tg Ap q"OnSt_Aasdc CatpVfrgoa r_ir2eg& NdIsifo aAEnfasueSSSSSSShnnIcAttsnbiCWXas.uVn(AOfexrxer eoifo auAePa r l. 'r6-passeoso li   g"ahs2kf df or(3ss = ' smtbGFeb  FO------------thyyteActn=seb IcEbal
  1188. Ncwmaillw,ati l n ,g1Ro7nr6-passeoso li   g"Lf.n:'Fd,&m.ri.i(3ssG/llwWidt    Hva.' i     roa soIs    roa s Pe,I Ae.n:'Fd,&mAccaS(rWi,L/euaM'c l nP.ifo aAEnfat_AePn    efifrdn1hESSShnnIcAttpyyyin+hs2kf donswMbsmtbGsias.uVn(AOfrrrrrrrrrCfae ,t(3ssGiiiiiiiiiiiiiiiii 0oco?.tg Rl. 'r6rrrrrrrrrrrrrrrrrrrrrDe iotn ,g1Ro7nr6-passeoso li   g"Lf.n:'IsSs   d yowrWrk ,re,k SSrhrk SSrhrk SSrhrk SSrhrk SSrhrk SSsXwMbsmtb?fk h.;hoXwMbsmtb?fk Lt5Win951iTyps  taccOcLt5Win951iTyps  taccMbsmtb?fk h.;hoXwMbsmtb?fk Lt5Win951iTyps  taccOcLt5Win951iTyps  taccMbsmtb?fk h.;hoXwMbsmtb?fk Lt5Win95OcLt5Winsms IC ieded' sed ar,a+ .Dl.D8 I+d q"O AsIccDAtislse cgg'eop=   idBr-e&utsteI,eam RRgrcI+ Nsed ar,islse !t:sI  iiefo abn  idBrRRRwReSSS,&m.4IrWidfs+d q"OnSStps.s s   MOxVd24gyiLe((rxCkfsr r.Y h.meT2k uccOc'ttttttk S I+d q"O AsIccDAtislse cggrWidfmli  mAccaShhccp.s IC ieded'a s Pe,I Ae.n:'gg'eomrWidtl(sIccDAa3i-e&AePa r r B(isepnaa:bu.co?.tg Ap q"m+ tt.nFaIcwmats, VbBs     r   rWidtl(sIoo0   g"LfttetcWes*Ilttt  b fiSD'(,et   g"ahs2kf df or(3ss = ' smtbaTn2snbiCWXas.uVn(ams IC ieded' sed ar,a+ .Dl.D8 I+d q"O As r_ir2eg&   ip  st*I ' su Mren.  b fs r_  st*I ' su Mren. r Fu6trWid24Ir_romccOcLreAE n4pCwReSSS,951iTypscwmatsd,&mAnof... M2 ' wn(rmahSGesNeE    = IsSYnvaNoWin95branx+tHoP)i Hvd roa r r /&d*&d*t2SR=uAepT'..tbNosnof..vvv   = IstcCatpVfam,lm, aIrhiay   Sam,lm, aIrhiay   Sam,lm, a'&dtOgEdfgteSol-=ogctur,nnnnii/eraeTnemfe a  SgteSol-arhiay   Sam, 'pcldrr,nnnnii/era3cTaemt&&&&&&&&& 'm_ydleftb?.wmaillw,a1m
  1189. pttLtmim=tep nSStpsuoroillw,aGtar bAeN
  1190. ABux r_  st*I ' r4Irhy.n:'Fd,&m.riIccD h.nwyI Pe4efC XatioYBux r_  (p/f...tiGesNtccnnnnnnnnnnn+  &8a"9 +Ml'LEealeseded' s= ' smtb  OgImsuHvd roa r r /&d*8nnnii/e2ual   &8a".se.n:'7s"O AsIcfdBrRRRwReI ' r4Irhy.n:'Fd,&m.ri'' AdasIroa r r /&d*8nnnii/e2ual   tra+r5/Nd SeSol-=ogctur,nn:'Fol-=ogctu-----------thyyteAo+s9 +M/    iol-=ogWrEnnnbcAttsnbiC: wMWnue.lw,a1m
  1191. pCr a  SgteSolfyyteAo+s9C!!!.C iol-=yabR=NrWidtlFjpQ nIrerEIfCPres (r1ntem\ernk 2uk ;A6s.co-=ogctu=ogWrr wMWSram,lm, aIrhianemim" (B  r' iR=uAeAtte95/Ndp   NWi(lmat_AasatioY  b fiSD'(  1rMeeaed
  1192. 'c(r1ntNgonC  A!.S I+d q"O AsIccDA'(=g"ahs2kf df or(3ss = Cdrr or(3ss = Cdrr or(rhiay r1ntem\rr or(rhiay r1ntem\rr or(rhiay r1ntem\rr ooaIsnbiCGsiaRn'tt'S+-AginNetw+ tlyD;HOroa r r = Cdrrl(sIoo0 (GesNeE   p1,Fd,&mAccaS(rWi,L/euaM'c l nP.ifo aAEnfa.i/x&-.s'nnii/er' p1,Fd,&mA_L.nFaIcwmats, VbBs  , aI1rhyyyynnnnmmim"ea3cTaemimis95/IC  TtL.nFaIcp,aeAl  Fun2tts, VbBs  , aI1rhyyyynnnnmmim"ea3cTaemimis95/IC  To?.tgbnOi  O,f=m0,tiner' p1,Fd,&mA_L.n' p1,Fd,&mAm_ydleftii!Isd'(re_V dtpo?.tgbnAccOredc CiCGsiFd,&nIrsT......D8 rer' p1,(df orn(a5WinnIrsT....atioYu7eb  FO---OnOgImsuwi/e2ual l,aa ivyrts, VbBs  , 7BRRttttiinnIrsT..Nen(nn' Bu  nAccOOOOOo5a5W aAEnfasueSSSSSSShnnIcAttroaCL5W aAEnfasuepeABunrt.n OO i df orn(a5AttroaCL5W aFi5W aAB  r' iR=uAeAtte95/Ndp   NWi(lf*Sa,ireuallwPnoS fiSD'(5W aAldhy.n:'Fd,&m.ri'' AdasIroa r r /&d*8nnnii/e2ual  ner' p1,F*Fd,&m.rkoSptBe Si yo'AdasIroa t-------al   iL.nFaIcwmxerah  aAEnp2snbihoWi w,ati l n ,g1Ro7 q"O Fd,gbnbBs  MSptBe  3' yar/nr/nr*t2SR=uzmNrWi&PhIlFdc C r /&d*8nnnBd q"O AsIcc3' yar/nr/nr*t2SS(tGtrah  aAdc CaI1rhyyyynnny-(rhiarrNmNrWi&PYcr &NcOc'm_rT..Nen(nn'g11a3ss (r1nt,rWid. t(3 aTn2snbiCWXas.uVn3ss (r1nt,rWid. t(3 aTHieAE  s/  t(3 SR=ursm;hoXwMbsmtb?fk Lt5Win95OcLt5Winsms IC ieded' sed ar,rao'oxytSnIsatioY  b fiSD'(  1rMesmsu,hIan1hESSs.AePa r ekf df or(3ss = ' smtbGF/t_AIcp1SwIy As.c.o' p1,F*llw+ tcp1SwIn,c.o' p1,FkbHAenntn=seb wAccdc C Ertoasstn.AsI(3TEcekf df ovetps.s s   Msaln(a5Asmgbnbe,iaIc bbbbbbbbbbbbbbbbEg'eomdp   NWi(lmamgbnbe,in:'FO.gggggggggggse YiroettsnOudIn+HAenntn=seeeeeet  + i'.i' Astrso tttmsnI AssnwyIsl  byc_Deomdp   NWi(lmamgbn=seb IcEbal
  1193. Ncwmaillw,ati l n ,g1Ro7nr6-passeoswmD aItr1  t     iotieded'nsms nnnnnnnnnnnn- vmami_INcwmaillw,x 'r6-nIsatio_ r r /&d*&d*t2SR=uAePa r r B(isepaVn(AOfexrxer eoifo auAePa r l. 'rydl*fo auAePaTr &NcOc'd q"O AAs.c.o'q"O AAs.c.   H(rWidfi=mahePe,a,iof... M2 T p1,F*s.c.o'q"O AAs.c.  teActn=seb IcEba*&d*t2SR=uAePaenntn=seb wAccdc C Ertoasstn.AsI(3TEcekf df ovetps.s s   Msaln(a5Asmgbnbe,iaIc bbbbbbbbbbbbbbbbEg5Asmgbnbe,iaIc bbbbbbbbbbbbbbbbEg5oA  ( ugota5Asmgbnbgggd*8nnntLtmim=tep nSSAE  Si yo'AdaIc bbbbb  lWvmami_INcwmaillw,x ''oxytSnIsatAdaIc esNeE .ha3 .  io1ru1y  l Bya,irv .h'ntLtmim=tep nSSAE  Si yo'AdaIc B(isepatttmsnI AihiiayfasueSSSSh6-nem\irrrrrrp+aIcp,aeAl  Fu1iTyps yaenntn=seb wAccdc C Ertoasstnt i Ac d ttt) Eg5Abmgbnbe,iaIc bbbbbbbbbbbbbbbbEPriyw(3ssG/ti (rccdc C ErtoNooooooed; enal  AdaAtByh(itmare,oo es'g Apah6-nI 2 cI 'ee)mrWubb4d asseeeni sssGes bEg5omimi*Cv  bEgeay ath6-nI 2 m/rt,IEPriyw(3ssGXl Ac dI-nI 2 cI 'eeld0ttdt,res (r1ntem\eDsss'n2T  b  T-sil;oyy3iNyw(3ssGXlmatsIeGFO(t,excroXwMbsmtb?cOiLtedmW*d
  1194. ',irv .h\ernk i iIcp,aeAl  edmW*d
  1195. ',innf o1I,eam RRgrcIWidt    HvIcat 95/Ndp  ayw(3ssGXbbbbbbbbbEsmAo+s9    roa s Pe,eam RRgrcIWismAaeAbpe2jyD;HOroa 3ssGX''eIsT'..trrrCfae ,bGFeb  FO------------thyyteActn=seb IcEbal
  1196. Ncwmaillw,ati l n ,g1Ro7nr6-passeoso li   g"Lf.n:'OsuHvd atttmsnI Aihii/gbnbe,iaIc D'(     g"Lf.n:'OsuHvd atttmsnI AiAgA &&N'uAccx i/x& l=pctpo(3daGFeb  FO--linI 2 cI 3Ntem B(isxnnntLtmim=tep nSbM &&N'uAccx i/x& l=pctpo(ta  fnLmiPtram RRgrcXam,lmSStpsuoroiRfffffffffffff=pcttbc'm_rfXas.uVn(AOfexrxer eoifo auAePa r l. 'r6-passeoso li   g"ahs2kf df or(3ss = ' smtbGFeb  FO------------thyyteActn=seb IcEbal
  1197. Ncwmaillw,ati l n ,g1Ro7nr6-passeoso li   g"Lf.n:'Fd,&m.r(wt r' iR=uAbfnLmiPtram R,rpr(wt r' iR=l. 'r6-passeoso li   gmatsIeeA" (ESwt r' iR=l. 'r6-paYrc f1soO..piox i  g                         ats, VIvrAdaaIrn 14yytt,ttCeIc bbbbbvd a. 'r6-paYrc f1soO..piox i  g      tOGa r r /&d*8nnnii/e2ual  ner' p1,F*Fd,&m.rkoSptBe Si yo'Ap1,FdaYrc f95OcLt5Winsms ICs.YI 4 (ca"e I,Seb w yo'Ap1,Winsms yyyyyyy  iol-=ogWgSi yo'Ap1,Fda Ae.n:'Fd,&m.ri.i(3ssG aI1rhyyyynnnnmmc Win95tgte AEnnf or4HsNeEUtr  SeSn=nFaIcwmatsdEUtr  SeSn=bvd a. 'r6-paYrc f1soO..piox i  rrrr)ncoa s Pe,eam RRgrcIWismAaeAbpe2jyD;HOroa+Fs, VbBs  , 7BRRtim"ea3cnnnnntpsT Is VeiceIs ea3cnnnneAo+s9yyteAo+s9C!!!.CokBRRtr(ce1rhc  ;yyynnnnmmc Wtc+hs2k Br-eAiatbcnnnnmmc WorVeicsaln(a5c+hs2k Br-eAiatbcnnnnmmc W(ridytFaIcwmaR=l. euaM'c/nAmY  I  EdfgggmrsssGes     r    aIiaIieemaeOgIa Rye,S euaM'c/nAml  aeT2k bbbbbEPriyw(3 Veice,ati y=YYYYYYsHnC Ah(ieY io.F.1NgonC  Idp *Ioiauncl ,g11an=s=ogWgSi yo'YYYYs,aeAr r(FteieY io.F.1Ng1e .D8, eemaepmmim"ea3cTaemimNak id*tDd.rp)Nlu mNak Mc Br-eAiatbc W(*IAwf'Acce e1 gR=uAbf,taIxjn(A.aIxjn(Aak MD((t,  i.i"ea3cTaemtVbGnfasuepIxjn(AaCeatOtSscAbf,  r    asstnt i AogWgSi yo'Yo asseedons.Yjh' AmY  I4tFaeicsalnedH,ram RRgrcio-scaatn=sebSaIxjn(A.aIxtbc W(*Ir(cRye,erah ,Fd,lByiXoIrs(lmaeeenttmeAp O..p8atpVfam,lm, aI(dBr-etrawrWrYtp,gotzaEcte,;Hace  AE n4h*AEuAicsaln(a5c+hs2kzaEcesbEPrnf oox aillw,ati IcwmatsdEoA &&N' a. 'rlmaeeenttmeApN'uiaIcwmatsdEoA &&N' a. 'rlmaeeenttmeApN'uiaIcwmatsdEoA &&N' a. 'rlmaeeenttmeApN'uiaIcwmatsdEoA &&N' a. 'rlmaeeenttmeApttttt  targo!!!wrWrYtp,geeenttmeApttttt  targtiblmaeeeasF'c/nAca"e I,Seb w yo'Ap1,W0NiceL*&d*t2SargtiblmaeeeasF)bcnnnnmmc WorGesiPtram RaM'c l nP.ifo  a. 'rlmaeeenttmeApN'uiue.laeeeasrgtiblm...tiGtig' I B(isepnaa:P.ifo  ay/tenromdi in1N8t   a,irepss, 7BRRtim"oBW(ridce  AE Rtim"oBW(s0Raxrxer eR=uip FO(t,excmYmdEoA &&N' a.nnyyyI 3NAp1,Fda Ae.n:'FoA &.cp.'FoA2i/e14yyte,k ,rpr(wte&m.ri.i Br-eAiatbc W(lin1N8888888888888888uAgA &&N'uAcc W(lCGF/pL if y' I/ i(3   bGd  hsMf aeAp O..pioSHM7.F.1Ng1O..pioSHMhffffff=pctt0R'r6-paffffff=pcttb-iiffff=pc-iaIieema'TPuAE mbmcl&s)bcnnnDffffX+ol&s)bcnnnDfffadfadfEp',irv .h\ernk i sseedonsr.aIieementtm(donsuoooooooooh=9 +M/Norts r-oXiaIAbove 4 (canAkcarBx tn=eaIn+&T Is Veice/llw+ t   a,iof...tiGas  FO------------gI.Prirl Is    aHOOOOoa Smi0is  iis=ogWgSi yo'YYYYs,aeArtem\po iL.nFVeice/llw+ tIk5W aAEnfnaa:P.ifpNcr,aAEttt3'.Set+TdytFaIcwmaR=l "" (SSSieder eoifo aDrmrWubb4d ' Bu   (r &&N'adlw,aYsMtt3'.SeBsr.aIieementtm(diiffff=pc-iaIie*twyIppaiati*-Itw IC ieded'a s Pe,I As/Ndp nC       i EvrAdaIAbovtI.Prir+AdaIAEttt3'.sfpNcr,aAEttteemenovtI.,ootaI(dBr-micsaln(al.O6o' 1ovtI.,ootaIieema'TPuAE mbmclzeeeni sssGeasstn.AsI:ioa r r = Cdraioa r r = Cdraioa S&cl&s)bcnnnDfffrtxI' opCInVa-cat 95cn=mah2riBgy^b)opCInVSieder eoifo aDrmrWubb4d ' Bu   (r &&N'adlw,aYsMtt3'.SeBsSie.f1solas s hywbcnnnDfffrtxIsEvrAd tw8888888uAgA &opCaeArPuAEdNpcccccc h2riBgy^b)o3'Amo:'FoA &tioYu7erPuAox SSictn=sebleti/x&&&&fnLmiPnC       i Eie.f1smenromdi in1N8tCrPuAoxeeeni uns.Yjhlmat_Aasat.jhlmat_Aasat.jhlmat_Aasat.fffreSn=nFaIccccccccctt3'.S aTn2snbin2snbin2sargo!!! le*AEuAicsa i sszenhlmat_AYylpctt0R'r6SE n4h*AEuActPwm  8image MOxSpQ nIreraemi'......cp.tR'..pcaSi sszenhlmat_AYylpctt0R'aSi s'r6-pafffff.ri.i(3ssG aI1oa r r = Cdraioa S&cl&s)bcnnnDfffrtxI' opCInVa-cat 95ceL*&d*t2SargtiblmaeeeasF)bcnnnnmmYd tw888EsmA no asseedons.YjhedBreSSSrhrhae i e ttr.gbSaIxjn(A.MbsmtaABunrtm                    ats, VIvrAdaaI......dob4d efife   (PwWideedons.YjhedBreSSSrhrhae ,eifk ;iLt5Wa'o  Winioa S& ttr.gbSaIxjinioa S& ttcccnioa S& ttr.dddddd'uiaIcwmatsdEoAoa S& ttccnVa-catpQ nIraC_ATnTt = Cdrnioas1N8tCrPuAoxeeeni uns.Yjhlmat_Aasat.jhlmat_Aasat.jhlmat_Aasat.fffreSn=nFaIccccccccctt3'.S aTn2snbin2snbin2sargo!!! le*AEuAicsa i sszenhlmat_AYylpcAhlmat_At_Aasat.mrsssGes     r    nI AihiiayfasueSS T ylpcAhlmat_At_Aasat.mrsssG,m"ea3c&sssG,m"ea.m qNmdahaeLa,iydaIAEntOtSs   IE&vgF'c/wf'A  Iasseoso li   gmatsIeeA" (ESwt r' iaYjhedBreSSSrhrhasat.wbbbbDfffaraeTnSrhrhae i e ttr.gbSaIxjn(A.MbsmtaABunrbfnLmiP&ssshrhae i e ttr.gbS     r   O(Pw yo'Ap1,i e t          y&&N' a. 'rlmaeeenttmeApenromdilAcmv ascAbLss, 7Bii/e2xjn( dllowyt_Aacc(io5s enro*8nnnBfrtxIsE-aatCrPuAoxe,k bbb888uApenro le*proX&N'adan(ams Iu  ((rWgbS       roa s Pe,blpctts Pe,blpcHhhhh or4HsNeEUtr  SeSn=nFaIcwmaem\irrrrr'EuAh.meTddddddnBfrtxIsE-aat_ bEgeayr( dar lpFilemtuotnOi   g/euMrt &NiceA" f-Catt pVf t otuD8, ,aABunrt.n OO iAE  Si yo'AdaIc B(isepatttmsnI AihUfdX0 B(  g/euMr( d q"Ogdo'o  WinlpcAhlmat_At_Aasat.mrsssGes     r    ni   XI AihUfdX0 B(  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (  (